Maison  >  Article  >  base de données  >  Explication des règles d'accès à l'index MySQL

Explication des règles d'accès à l'index MySQL

王林
王林avant
2020-01-27 20:53:573954parcourir

Explication des règles d'accès à l'index MySQL

Tout d'abord, comprenons le principe de correspondance le plus à gauche, comme suit :

1 Localisez d'abord les conditions de requête du SQL, quelles sont-elles, lesquelles sont. équivalent, lequel est une condition du champ d’application.

2. Utilisez les conditions de valeur égale pour atteindre le champ le plus à gauche de l'index, puis appuyez-le de gauche à droite dans l'ordre, avec la plage à la fin.

Analyse et explication

1. Les index MySQL sont divisés en index clusterisés et les index non clusterisés sont des tables organisées par index clusterisés.

Les règles de clustering sont les suivantes : s'il existe une clé primaire, définissez l'index de clé primaire comme un index clusterisé ; s'il n'y a pas de clé primaire, sélectionnez le premier index unique qui n'autorise pas NULL ; Rowid intégré d'Innodb comme index clusterisé.

(Tutoriel vidéo d'apprentissage gratuit recommandé : Tutoriel vidéo mysql )

L'index non clusterisé est également appelé index secondaire ou index auxiliaire.

2. L'index de MySQL, qu'il s'agisse d'un index clusterisé ou d'un index non clusterisé, est une structure arborescente B+. Les nœuds feuilles de l'index clusterisé stockent les données et les nœuds feuilles de l'index non clusterisé stockent les valeurs de clé et de clé primaire de l'index non clusterisé. La hauteur de l'arbre B+ est la hauteur de l'index.

3. Hauteur de l'index

La hauteur de l'index clusterisé détermine le nombre théorique d'IO pour récupérer les données en fonction de la clé primaire. Les temps d'E/S théoriques pour la lecture des données basées sur l'index non clusterisé doivent être ajoutés au nombre total de temps d'E/S pour accéder à l'index clusterisé. En fait, cela ne nécessitera peut-être pas autant d’E/S. Parce que la page où se trouve le nœud de branche de l'index sera mise en cache dans la mémoire MySQL en raison de plusieurs lectures.

La taille de bloc par défaut de MySQL est de 16 Ko. La hauteur de l'index peut être estimée approximativement en fonction de la longueur de la colonne d'index.

L'optimisation SQL est basée sur la condition Where dans l'instruction

SQL En utilisant les règles d'extraction ci-dessus, elle sera finalement extraite vers la clé d'index (première clé et dernière). Clé), Index parmi les filtres et les filtres de table.

La première clé d'index est uniquement utilisée pour localiser la plage de départ de l'index, elle n'est donc utilisée que lors de l'indexation du premier chemin de recherche (parcourant tout le long du nœud racine de l'arbre d'index B+ jusqu'à la feuille correcte position du nœud de l'index) Utilisez-le et jugez-le une fois ;

La dernière clé de l'index est utilisée pour localiser la plage de fin de l'index. Par conséquent, pour chaque enregistrement d'index lu après la plage de départ, vous devez juger si. il a dépassé la plage de la dernière clé de l'index, si elle est dépassée, la requête en cours se termine

Le filtre d'index est utilisé pour filtrer les enregistrements de la plage de requête d'index qui ne répondent pas aux conditions de la requête, donc chaque enregistrement de l'index. La plage doit être comparée au filtre d'index, si elle ne satisfait pas au filtre d'index, elle sera directement supprimée et continuera à lire l'enregistrement suivant dans l'index

Filtre de table, c'est la dernière ligne de ; défense pour la condition Where, utilisée pour filtrer les enregistrements qui ont réussi les couches de tests dans l'index précédent. Cet enregistrement à ce moment-là a satisfait à la plage formée par Index First Key et Index Last Key et a satisfait aux conditions de Index Filter. L'enregistrement complet est relu dans la table et il est jugé si l'enregistrement complet satisfait à la condition de requête dans le filtre de table. De même, si ce n'est pas satisfait, ignorez l'enregistrement actuel et continuez à lire l'enregistrement suivant dans l'index. l'enregistrement. Cet enregistrement remplit toutes les conditions de localisation et peut être renvoyé à l'utilisateur frontal

pour analyse

De quel type de processus une instruction SQL a-t-elle besoin passer par pour être exécuté ?

Lorsqu'une instruction SQL est soumise à la base de données MySQL pour requête, elle doit passer par les étapes suivantes :

1 Tout d'abord, à l'étape d'analyse Where, les conditions de requête dans le courant. Les instructions de requête sont décomposées en une unité de condition indépendante

2. Mysql divisera et réorganisera automatiquement le sql

3 Ensuite, la condition Where effectuera la correspondance d'index dans l'index B-tree ; partie. Si l'index est atteint, l'emplacement des enregistrements de table spécifié sera localisé. S'il n'y a pas de réponse, toutes les analyses peuvent uniquement être utilisées ;

4. Renvoie la valeur de données correspondante en fonction du champ de requête actuel.

Comme indiqué ci-dessous :

Explication des règles daccès à lindex MySQL

Tutoriels d'articles connexes recommandés : Tutoriel MySQL

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer