MySQL instruction SQL Optimizer expliquer des mots-clés

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 explainanalyse des mots clés les instructions SQL et les index d'utilisation pour optimiser les requêtes.

explainmot-clé

explainUtilisez 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ù

explainFormer 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
  1. id est la même, l'ordre de haut en bas
  2. 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
  1. simpleUne simple requête, ne contient pas de sous-requête
  2. primary: Contient des sous-requêtes, les requêtes pour les régions ultrapériphériques
  3. subquery: sous-requête
  4. derived: Table dérivé, table virtuelle
  5. union: Mot-clé apparaît union
  6. union select: Union résultats de la requête
  • table: Nom de la table requête
  • type: 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
  1. system: Le tableau est qu'un seul enregistrement (égal aux tables système), ce qui est une constsorte de cas particulier, ne se produit généralement pas, cela peut être ignoré.
  2. const: Représente le temps par un index pour trouver, constà titre de comparaison primary key, ou unionl'index, car une seule ligne de correspondance de données, si tôt, que sera placé là où la clé primaire.
  3. 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 unique
  4. ref: 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.
  5. 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.
  6. index: Analyse complète de l' index, indexet allla différence est indexle type de traverser l'arbre d'index uniquement. Ce ratio est généralement allplus rapide, car le fichier d'index est généralement plus petit que le fichier de données (c'est - à - dire si allet indexsont scan de table, mais indexest analysé à partir du fichier d'index allest lu par le disque dur)
  7. 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 est null, alors ne pas utiliser l'index, si elle est utilisée pour couvrir l'indice, l'indice apparaît uniquement dans keyla 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_lenLa valeur de longueur maximale est affichée dans le champ d'index, et non pas la longueur réelle, à savoir, key_lenest 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.
  • rowsSelon 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
  1. 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 lente
  2. using 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 tri order byet group by. Cela se produit demande sera très lente.
  3. 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 temps using where, montre que l'indice est utilisé pour effectuer la recherche d'index, si pas lieu en même temps using where, ce qui indique que l'indice utilisé pour lire pour trouver une action non exécutif.
  4. using where: Utilisez les wheremots - clés de recherche
  5. impossible 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 rangle niveau requis est le refniveau, si vous pouvez être constsle meilleur.
    explication: Une constsseule table ne peut avoir une ligne correspondante (clé primaire ou un index unique), les données peuvent être lues à l'étape d'optimisation.
    refIl fait référence à l'utilisation d'un indice ordinaire (indice normal)
    rangde 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
Publié 27 articles originaux · louange gagné 28 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/justLym/article/details/105076001
conseillé
Classement