Maison  >  Article  >  base de données  >  L'index sera-t-il utilisé dans MySQL ?

L'index sera-t-il utilisé dans MySQL ?

WBOY
WBOYoriginal
2022-05-27 15:43:066580parcourir

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'index sera-t-il utilisé dans MySQL ?

L'environnement d'exploitation de ce tutoriel : système windows10, version mysql8.0.22, ordinateur Dell G3.

Utilisera-t-il l'index dans MySQL ?

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

Scénario 1 : Lorsque la valeur dans IN n'a qu'une seule clé primaire

Lindex sera-t-il utilisé dans MySQL ?

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

Lindex sera-t-il utilisé dans MySQL ?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

Lindex sera-t-il utilisé dans MySQL ?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 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:
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