Maison > base de données > tutoriel mysql > le corps du texte

Analyse de la commande EXPLAIN dans MySQL

怪我咯
Libérer: 2017-04-01 10:53:14
original
1088 Les gens l'ont consulté

explain montre comment mysql utilise index pour traiter les instructions de sélection et joindre des tables. Cela peut aider à choisir de meilleurs index et à écrire des instructions query plus optimisées.

Pour l'utiliser, ajoutez simplement expliquer avant l'instruction select :
Par exemple :

explain select surname,first_name form a,b where a.id=b.id
Copier après la connexion

Explication de la colonne EXPLAIN :

table : indique la table sur laquelle porte cette ligne de données.

type : il s'agit d'une colonne importante, indiquant le type de connexion utilisé. Les types de jointure du meilleur au pire sont const, eq_reg, ref, range, indexhe et ALL

possible_keys : affiche les index qui peuvent être appliqués à cette table. S'il est vide, aucun index n'est possible. Une instruction appropriée peut être sélectionnée dans l'instruction WHERE pour le domaine concerné

clé : l'index réel utilisé. Si NULL, aucun index n'est utilisé. Rarement, MYSQL sélectionnera un index sous-optimisé. Dans ce cas, vous pouvez utiliser USE INDEX (nom de l'index) dans l'instruction SELECT pour forcer l'utilisation d'un index ou IGNORE INDEX (nom de l'index) pour forcer MYSQL à ignorer l'index

key_len : la longueur de l'index utilisé . Plus la longueur est courte mieux c'est sans perdre en précision

ref : Montre quelle colonne de l'index est utilisée, si possible, une constante

lignes : MYSQL juge nécessaire de vérifier le nombre de lignes utilisées pour renvoyer les données demandées

Extra : informations supplémentaires sur la façon dont MYSQL analyse la requête. Sera discuté dans le tableau 4.3, mais les mauvais exemples que l'on peut voir ici sont l'utilisation de fichiers temporaires et l'utilisation de fichiers, ce qui signifie que MYSQL ne peut pas du tout utiliser l'index, et le résultat est que la récupération sera très lente

Description de retour de colonne supplémentaire Signification de

Distinct : Une fois que MYSQL trouve une ligne qui correspond à l'union de lignes, il ne la recherche plus

N'existe pas : MYSQL optimise LEFT JOIN une fois qu'il trouve une correspondance, les lignes standard LEFT JOIN ne sont plus recherchées

Plage vérifiée pour chaque enregistrement (carte d'index : #) : l'index idéal n'est pas trouvé, donc pour chaque combinaison de lignes de la table précédente, MYSQL vérifie quel index à utiliser et utilisez-le pour renvoyer des lignes de la table. C'est l'une des connexions les plus lentes utilisant un index

Utilisation du tri de fichiers : lorsque vous voyez cela, la requête doit être optimisée. MYSQL nécessite une étape supplémentaire pour découvrir comment trier les lignes renvoyées. Il trie toutes les lignes en fonction du type de connexion et des pointeurs de ligne qui stockent la valeur de la clé de tri et toutes les lignes correspondant à la condition

Utilisation de l'index : les données de colonne sont obtenues en utilisant simplement les informations de l'index sans lire le contenu réel. action La table est renvoyée. Cela se produit lorsque toutes les colonnes demandées de la table font partie du même index

Utilisation de temporaire Lorsque vous voyez cela, la requête doit être optimisée. Ici, MYSQL doit créer une table temporaire pour stocker les résultats. Cela se produit généralement lorsque ORDER BY est effectué sur différents ensembles de colonnes au lieu de

Where used utilise une clause WHERE pour limiter les lignes à comparer. avec la table suivante correspond ou est renvoyé à l'utilisateur. Cela peut arriver si vous ne souhaitez pas renvoyer toutes les lignes de la table et que le type de jointure est ALL ou index, ou s'il y a un problème avec la requête Explication des différents types de jointure (triés par ordre d'efficacité)
.
system La table n'a qu'une seule ligne : table système. Il s'agit d'un cas particulier du type de jointure const

const : la valeur maximale d'un enregistrement de la table pouvant correspondre à cette requête (l'index peut être une clé primaire ou un index unique). Comme il n'y a qu'une seule ligne, cette valeur est en fait une constante, car MYSQL lit d'abord cette valeur puis la traite comme une constante

eq_ref : Dans la connexion, MYSQL interrogera chaque enregistrement de la table précédente La jointure lit un enregistrement de la table. Il est utilisé lorsque la requête utilise la totalité de la clé primaire ou de la clé unique de l'index

ref : Ce type de connexion n'est utilisé que lorsque la requête utilise une clé qui n'est pas unique ou. clé primaire ou est-ce que ces types de sections (par exemple, en utilisant le préfixe le plus à gauche) se produisent. Pour chaque jointure de ligne de la table précédente, tous les enregistrements seront lus à partir de la table. Ce type dépend fortement du nombre d'enregistrements correspondant en fonction de l'index - moins il y en a, mieux c'est

plage : ce type de jointure utilise l'index pour renvoyer une plage de lignes, comme ce qui se passe lors de la recherche de quelque chose en utilisant > ; ou < 🎜>
index : Ce type de connexion effectue une analyse complète de chaque union d'enregistrements dans la table précédente (mieux que ALL, car l'index est généralement plus petit que les données de la table)

ALL : Ce type de connexion effectue une analyse complète de chaque enregistrement du tableau précédent. Chaque enregistrement est combiné pour une analyse complète, ce qui est généralement mauvais et doit être évité


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!