Maison > Article > base de données > L'index sera-t-il utilisé dans MySQL ?
Il existe deux cas où in utilisera l'index dans MySQL : 1. Lorsque la plage de valeurs de in est petite, in utilisera l'index ; 2. Lorsque la plage de valeurs de in est grande, in n'utilisera pas l'index, mais utilisera l'index. Utiliser l'analyse complète de la table. Parce que lorsqu'il y en a trop dans les conditions, beaucoup de données seront renvoyées, ce qui peut provoquer un débordement de mémoire dans le tas de l'application et conduire à un échec de l'index.
L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.
Conclusion : IN utilisera certainement l'index, mais lorsque la plage de valeurs de IN est large, cela entraînera un échec de l'index et une analyse complète de la table sera utilisée
L'outil de visualisation navicat utilise la fonction d'explication. pour afficher les informations d'exécution SQL
Nous devons seulement prêter attention aux informations de type les plus importantes. Il est évident que l'index est utilisé :
Le. la valeur du résultat est classée du meilleur au pire. Est :
system > eq_ref > fulltext ref_or_null > all : analyse complète de la table
index : une autre Une forme d'analyse complète de la table, sauf que la méthode d'analyse est dans l'ordre de l'index
range : une analyse d'index à distance, comparée à l'analyse complète de la table de l'index, elle a une plage restrictions, donc c'est mieux que index
ref : La colonne de condition de recherche utilise un index et n'est pas la clé primaire ou unique. En fait, cela signifie que même si un index est utilisé, la valeur de la colonne d'index n'est pas unique et il existe des doublons. De cette façon, même si la première donnée est rapidement trouvée à l'aide de l'index, elle ne peut toujours pas s'arrêter et doit parcourir une petite plage proche de la valeur cible. Mais son avantage est qu'il n'est pas nécessaire d'analyser la table entière, car l'index est ordonné, et même s'il y a des valeurs en double, il sera analysé dans une très petite plage.
const : Normalement, si une clé primaire est placée après Where en tant que requête conditionnelle, l'optimiseur MySQL peut optimiser la requête et la convertir en constante. Quant à comment et quand convertir, cela dépend de l'optimiseur
De manière générale, il faut s'assurer que la requête atteint au moins le niveau range, de préférence ref. Lorsque index et all apparaissent en type, cela signifie qu'une table complète. l'analyse est effectuée sans indexation, faible efficacité, à ce stade, le SQL doit être réglé.
Quand Extra apparaît Using filesor ou Using temproary, cela signifie que l'index ne peut pas être utilisé et que l'optimisation doit être effectuée dès que possible.
possible_keys : L'index utilisé par SQL
key : Affiche la clé (index) que MySQL décide réellement d'utiliser. Si aucun index n'est sélectionné, la clé est NULL
rows : Affiche le nombre de lignes que MySQL pense devoir examiner lors de l'exécution de la requête.
Scénario 2 : Élargir la plage de valeurs dans IN
L'indice est toujours utilisé à l'heure actuelle, mais l'efficacité est réduite
Scénario 3 : Continuer à élargir la plage de valeurs de IN
Regardez Dans l'image ci-dessus, on constate qu'il n'y a pas d'index pour le moment, mais une analyse complète de la table.
Parlons de la conclusion
Conclusion : IN utilisera certainement l'index, mais lorsque la plage de valeurs de IN est large, cela entraînera l'échec de l'index et utilisera l'analyse complète de la table.
Au fait : si not in est utilisé, l'index ne sera pas utilisé.
Apprentissage recommandé :
Tutoriel vidéo mysqlCe 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!