Le principe sous-jacent de mise en œuvre de l'index MySQL
Recommandations d'apprentissage gratuites associées :tutoriel vidéo MySQL
1. Avant-propos
MySQL prend en charge de nombreux moteurs de stockage, et divers moteurs de stockage ont une prise en charge différente pour les index. Par conséquent, la base de données MySQL prend en charge plusieurs types d'index, tels que l'index BTree et B+. Index d'arborescence, index de hachage, index de texte intégral, etc.
2. Type d'index
1. Index de hachage
Seul le moteur de stockage mémoire (mémoire) prend en charge l'index de hachage, Hash L'index fait référence à la valeur de la colonne d'index pour calculer le hashCode de la valeur, puis stocke l'emplacement physique des données de ligne où la valeur se trouve à l'emplacement correspondant du hashCode. L'algorithme de hachage étant utilisé, le. la vitesse d'accès est très rapide, mais une valeur ne peut correspondre qu'à un seul hashCode, et il s'agit d'un hachage distribué, donc l'index de hachage ne prend pas en charge les fonctions de recherche et de tri par plage.
2. Index BTree et index B+Tree
L'index BTree est un multi-arbre de recherche équilibré, si le arbre La profondeur est 2d (d > 1) et la hauteur est h, alors BTree doit remplir les conditions suivantes :
①La hauteur de chaque nœud feuille doit être la même, égale à h
②Chaque nœud feuille est composé de n- Il se compose de 1 clé et de n pointeurs, où d <= n <= 2d, la clé et le point sont espacés l'un de l'autre, et les deux extrémités du nœud doivent être des clés
③Le nœud feuille ; les pointeurs sont tous nuls ;
④Les clés des nœuds non-feuilles sont toutes des tuples [key, data], où key représente la clé comme index, et data est les données de la ligne où se trouve la valeur de la clé.
B+Tree est une variante de BTree Si d est le degré de l'arbre et h est la hauteur du nombre, la principale différence entre B. +Tree et BTree c'est ça :
①Les nœuds non-feuilles de B+Tree ne stockent pas de données, seulement des valeurs clés
②Les nœuds feuilles de B+Tree n'ont pas de pointeurs, toutes les valeurs clés apparaîtront sur les nœuds feuilles, et la clé est stockée La valeur de la clé correspond à l'adresse physique des données
③Chaque nœud non-feuille de B+Tree se compose de n valeurs de clé et de n pointeurs.
① Les coûts de lecture et d'écriture du disque sont inférieurs
② La vitesse des requêtes est plus stable ;
3. Index en texte intégral
L'index FullText (texte intégral) ne peut être utilisé que pour MyISAM et InnoDB. Pour des données plus volumineuses, générer un index en texte intégral. prend beaucoup de temps et d'espace.
Lors de la génération de l'index FullText, une liste de mots sera générée pour le texte, et l'index sera basé sur cette liste de mots lors de l'indexation.
Recommandations d'apprentissage gratuites associées :base de données mysql(vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!