contour
A ce grand données, flux du temps, notre site est non seulement fluidité de la circulation, la quantité de données sera très grande. Nous devons trouver les données exactes de l'énorme quantité de données, cette base de données de pression relativement importante sur nous. Et quand nous ne considérons pas le fonctionnement du sous-table, une optimisation de l' instruction SQL sous-bibliothèque est une bonne solution, ici explain
analyse des mots clés les instructions SQL et les index d'utilisation pour optimiser les requêtes.
explain
mot-clé
explain
Utilisez le format
EXPLAIN SELECT
*
FROM
SCORE
WHERE
CNO = '3-105'
AND DEGREE > (
SELECT
DEGREE
FROM
SCORE
WHERE
SNO = 109
)
résultats de la requête
ça | sélectionner le genre | table | type | possible_keys | clé | key_len | ref | Lignes | supplémentaire |
---|---|---|---|---|---|---|---|---|---|
1 | PRIMAIRE | BUT | TOUT | nul | nul | nul | nul | 12 | L'utilisation où |
2 | sous-requête | BUT | TOUT | nul | nul | nul | nul | 12 | L'utilisation où |
explain
Former chaque analyse d'attributs
id
: Sélectionner le numéro de séquence de requête, contient un ensemble de numéros indiquant l'ordre des clauses ou sélectionner une exécution de la requête table d'opération
- id est la même, l'ordre de haut en bas
- id pas la même, si un certain nombre de sous-requête est incrémenté id, une plus grande identifiant la valeur la plus élevée à la priorité, la première à être exécutée ,, plus grande identifiant dans tous les groupes de priorité plus élevée
select_type
: Trier, la différence principale est la requête normale, la requête syndicale, sous requête et d'autres requêtes complexes
simple
Une simple requête, ne contient pas de sous-requêteprimary
: Contient des sous-requêtes, les requêtes pour les régions ultrapériphériquessubquery
: sous-requêtederived
: Table dérivé, table virtuelleunion
: Mot-clé apparaît unionunion select
: Union résultats de la requête
table
: Nom de la table requêtetype
: Les informations contenues dans le plan de mise en œuvre, montrant quel type d'utilisations de la requête
type类型从最好到最差
system > const > eq_ref > ref > range >index > all
system
: Le tableau est qu'un seul enregistrement (égal aux tables système), ce qui est uneconst
sorte de cas particulier, ne se produit généralement pas, cela peut être ignoré.const
: Représente le temps par un index pour trouver,const
à titre de comparaisonprimary key
, ouunion
l'index, car une seule ligne de correspondance de données, si tôt, que sera placé là où la clé primaire.eq_ref
: Scan d'index unique pour chaque clé d'index, un seul enregistrement dans le match de la table. clé primaire commune ou balayage d'index uniqueref
: Index non unique analyse toutes les déclarations lignes qui correspondent aux conditions. En substance est une sorte d'index, il retourne tout correspondant à une digne individuelle de toutes les lignes, cependant, il peut devoir trouver rangée plus qualifiés, donc il devrait appartenir à la recherche et la numérisation pour obtenir un corps mixte.range
: Récupérer uniquement une plage donnée de la ligne, en utilisant l'index pour sélectionner les lignes. colonne indique clés index à utiliser, apparaissent généralement sur votre relevé où entre, <,>, dans d'autres enquêtes, une telle analyse de la plage est mieux qu'un scan de table, car un certain point de l'indice n'a besoin que commencer, et un certain point final, pas un balayage tableau complet.index
: Analyse complète de l' index,index
etall
la différence estindex
le type de traverser l'arbre d'index uniquement. Ce ratio est généralementall
plus rapide, car le fichier d'index est généralement plus petit que le fichier de données (c'est - à - dire siall
etindex
sont scan de table, maisindex
est analysé à partir du fichier d'indexall
est lu par le disque dur)all
: Scan de table
possible_keys
: Affiche l'index peut appliquer à la requête, un ou plusieurs. Recherches similaires à l'existence des champs d'index, seront répertoriés dans l'index, mais pas nécessairement utilisés dans la requête.key
: Requête réelle de l'indice à utiliser. S'il estnull
, alors ne pas utiliser l'index, si elle est utilisée pour couvrir l'indice, l'indice apparaît uniquement danskey
la liste.key_len
: Indique le nombre d'octets utilisés dans l'index, la colonne peut être calculée à l'aide de la requête à la longueur de l' index. Sans perte de précision, d' une longueur aussi courte que possible.key_len
La valeur de longueur maximale est affichée dans le champ d'index, et non pas la longueur réelle, à savoir,key_len
est calculée sur la définition de table de base, ne sont pas récupérés par le tableau.ref
: Les colonnes montrent que les index sont utilisés, si possible, il est une constante. Quelles colonnes ou constantes sont utilisées pour déterminer la valeur de l'indice sur la colonne.rows
Selon les statistiques du nombre de lignes et de cas index de sélection de table, se trouve une estimation approximative du dossier nécessaire à lire:extra
: Ne convient pas pour l'affichage dans les autres colonnes, mais des informations importantes
using filesort
: MySQL sera décrit en utilisant un indice de commande de données externes, au lieu de lire en fonction de l'index de la table. MySQL ne peut pas utiliser des index pour effectuer une opération de tri appelé文件排序
. Dans ce cas, la requête sera très lenteusing temporary
: Remarque utiliser des tables temporaires pour maintenir les résultats intermédiaires, MySQL dans les résultats de la requête sont triés en utilisant une table temporaire. Commun dans le triorder by
etgroup by
. Cela se produit demande sera très lente.using index
: Indique que l'opération de sélection en utilisant un indice de recouvrement (indice couvrant) correspondant, empêcher l' accès aux lignes de données, une bonne efficacité! Si en même tempsusing where
, montre que l'indice est utilisé pour effectuer la recherche d'index, si pas lieu en même tempsusing where
, ce qui indique que l'indice utilisé pour lire pour trouver une action non exécutif.using where
: Utilisez leswhere
mots - clés de rechercheimpossible where
: La valeur totale de la clause fausse, ne peut pas être utilisé pour obtenir une tuple
Index cas d'optimisation
- indexation de table unique, requête champs ne semblent pas plage d'index sinon la situation échouera
- Deux tables requête de jointure indexation, l'indice général construit à partir de la table, la connexion à gauche, la mise en place du droit, les bonnes connexions, construites à gauche.
Indice de défaillance cas (à éviter)
- match plein la valeur de mon favori (requête en pleine conformité avec séquentielle indexée)
- Meilleure règle préfixe gauche: Si un index à plusieurs colonnes, le préfixe gauche plus de se conformer à la loi. Il fait référence à un indice de la requête de la colonne de gauche du début et non sauter la colonne d'index (trains de catégorie, locomotives)
- Ne faites rien (fonction de calcul (automatique ou manuelle) conversion de type) sur toutes les colonnes, l'indice conduira à l'échec, entraînant un scan de table
- moteur de stockage ne peut pas utiliser l'index dans la colonne de droite des conditions de gamme
- Essayez d'utiliser un indice de couverture (un index uniquement des requêtes d'accès), ce qui réduit select *
- Ne correspond pas à l'utilisation de (! = Ou <>) ne peut pas être utilisé lorsque l'indice résultant d'une analyse complète de la table
- Il est nul ou non nul ne peut utiliser l'index
- commence par un caractère générique comme ( « % abcd »), analyse de table d'index MySQL échouera devient au point
- Chaîne unique sans index guillemets échouera
- Moins ou, avec ses connexions peuvent provoquer une défaillance de l'indice
spécification Alibaba
- Recommandé]: les performances de SQL objectif de réglage: pour atteindre au moins
rang
le niveau requis est leref
niveau, si vous pouvez êtreconsts
le meilleur.
explication: Uneconsts
seule table ne peut avoir une ligne correspondante (clé primaire ou un index unique), les données peuvent être lues à l'étape d'optimisation.
ref
Il fait référence à l'utilisation d'un indice ordinaire (indice normal)
rang
de la plage d'index recherche
Contre: Les résultats expliquent le tableau, type = index, l'index des fichiers physiques scan complet, la vitesse est très lente, le niveau de l'indice est également portée relativement faible, et un scan de table est trivial