Maison  >  Article  >  base de données  >  Explication détaillée par MySQL des lignes de tri d'index

Explication détaillée par MySQL des lignes de tri d'index

黄舟
黄舟original
2017-03-02 16:33:561484parcourir

L'article précédent vient de présenter brièvement plusieurs structures et méthodes de stockage de B-TREE, mais la relation entre l'index et les données ne semble toujours pas connectée

Donc, dans. cet article, à travers un exemple concret de ligne de données, après création de l'index, quel est l'ordre dans lequel elles sont triées sur le B TREE.

1. Simuler et créer des données originales

Dans la figure ci-dessous, le côté gauche correspond aux données simulées pour ma convenance. Le moteur est mysiam~

Le côté droit est un tableau de données de simulation normale après les avoir disposées aléatoirement à l'aide d'EXCEL. Les clés primaires sont disposées selon 1-27 (si ce n'est pas aléatoire, Je vais à l'origine simuler les données. Elles sont écrites dans l'ordre, et le processus de tri de l'index n'est pas clairement visible après l'ajout de l'index)

En d'autres termes, les données à droite de crée les données originales que nous voulons tester. Les données sont triées comme ceci avant la construction de l'index. Toutes les données suivantes sont basées sur cela, il est donc préférable de voir l'effet de tri après. l'index est généré.

Le tableau comporte 4 champs (id, a, b, c), avec un total de 27 lignes de données



2. Créer un index a

Comme indiqué ci-dessous, après la création de l'index a, la structure de l'index passe du tri d'origine en fonction de l'ID de clé primaire à une nouvelle règle. Nous disons que l'index est en fait une structure de données. . Créez ensuite l'index a, qui consiste à créer une nouvelle structure, triez selon les règles du champ a, la première ligne de données représentée par l'ID de clé primaire est 1, la deuxième ligne de données représentée par ID=3 et la troisième ligne de données représenté par la ligne de données ID = 5. . .


Nouvel ID de clé primaire de tri (l'ID représente leur ligne de données) : 1 3 5 6 9 16 18 23 26 2 10 11 12 13 14 15 20 25 4 7 8 17 19 21 22 24 27

Il n'est pas difficile de constater que lorsque le champ a est le même, leur disposition Trier par ID de clé primaire avant et après, par exemple, la même valeur est a = 1,1, mais leur ordre est que la valeur d'ID est 1, 3, 5, 6. . Les lignes correspondantes sont triées dans un ordre similaire à celui de l'ID de clé primaire. (c'est-à-dire trier lorsque les valeurs sont les mêmes, avec le plus petit identifiant au début)



3. Créer un index (a,b)

Comme indiqué ci-dessous, après avoir créé l'index conjoint (a ,b), dans cet index Dans la structure, le tri d'origine selon l'ID de clé primaire a été remplacé par une nouvelle règle. La règle de tri trie d'abord selon le champ a, puis trie selon le champ b en fonction de a. Autrement dit, en fonction de l'index a, le champ b est également trié.


Nouvel ID de clé primaire de tri (l'ID représente leur ligne de données) : 6 18 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21

Il n'est pas difficile de trouver que lorsque les valeurs des champs a et b sont identiques, leur disposition avant et après est également déterminée par l'ID de clé primaire. Par exemple, la même ligne (18, 6, 23) avec a=1.1, b=2.1, mais leur ordre est 6, 18, 23. .

Index de champ (a,b), trié d'abord par un index, puis en fonction de a, trié par b

6 18 23 10 15 20 7 22 27 1 3 26 2 11 25 4 8 24 5 9 16 12 13 14 17 19 21


IV. ,b,c)

index du champ (a,b,c), trier d'abord par index a,b, puis sur base de (a, b), trier selon c


Nouvel identifiant de clé primaire de tri (L'ID représente leurs données de ligne) : 23 6 18 15 20 10 27 22 7 1 26 3 11 2 25 24 4 8 5 16 9 12 14 13 17 19 21



5. Conclusion :



et L'article précédent Mysql-Index-BTree Type [Simplifié] disait la même chose. La dernière rangée de nœuds feuilles de l'arborescence B-TREE est disposée de gauche à droite dans cet ordre. ordres. Avec la commande, la recherche ne serait-elle pas beaucoup plus pratique et plus rapide


Nous savons que le processus de lecture des données (assez Pour le processus de recherche d'une pièce), s'il existe un index (table d'enregistrement de la pièce), lisez d'abord la structure des données de l'index (car il contient de petites données et est rapide à lire) et trouvez l'emplacement de stockage du véritable physique. disque (équivalent au nœud feuille de sa structure). Après avoir trouvé le numéro de maison, prenez ensuite le numéro de maison pour obtenir les données directement à partir du disque. S’il n’y a pas d’index, cela signifie que vous ne connaissez pas la destination. Recherchez simplement de pièce en pièce.

Lorsqu'il n'y a pas d'index, l'ID de clé primaire est en fait leur index, classé selon les règles d'ID de clé primaire de petit à grand

Quand il y a quelque chose Lors de l'indexation, l'index a, l'index conjoint (a, b) et l'index conjoint (a, b, c) correspondent à trois structures B TREE, et les disques physiques pointés par l'extrémité de la feuille les nœuds sont différents.


Conclusion :

1. Si aucun index n'est créé, il est classé par ordre croissant selon la clé primaire ID

2. Lorsque l'index a est créé, un nouvel index structurel. (B TREE) sera généré Utilisé pour enregistrer une nouvelle règle structurelle pour faciliter la recherche rapide

3 Lors de la création de l'index a, de l'index ab, de l'index abc, l'ordre des données correspondant des trois. l'un d'eux est différent

4. L'index abc prend en compte à la fois l'index ab et l'index a, donc lorsque le premier est disponible, les deux derniers n'ont pas besoin d'être créés

5. L'index est établi et les colonnes non indexées sont triées par ID croissant par défaut

Ce qui précède est l'explication détaillée des lignes de tri de l'index Mysql. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php .cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn