Maison base de données tutoriel mysql Résumé de l'utilisation d'Explain dans MySQL (détaillé)

Résumé de l'utilisation d'Explain dans MySQL (détaillé)

Jan 07, 2019 am 10:37 AM
mysql


Cet article vous apporte un résumé de l'utilisation d'Explain dans MySQL (détaillé). Il a une certaine valeur de référence, j'espère. cela vous sera utile.

Plan d'exécution (requête Plan d'exécution)

Syntaxe

explain select * from table
Copier après la connexion

Expliquer Les informations dans la colonne

expain sont 10 columns,
sont id, select_type, table, type, partitions, possible_keys, key, key_len, ref, rows, Extra. Ce qui suit est une explication possible de l'occurrence de ces champs :

. 1. ID

Identification de l'ordre d'exécution de SQL, SQL est exécuté du grand au petit

1 Lorsque l'ID est le même, l'ordre d'exécution est de haut en bas.

2. S'il s'agit d'une sous-requête, le numéro de séquence de l'ID augmentera. Plus la valeur de l'ID est grande, plus la priorité est élevée et elle sera exécutée en premier

3. Si le Les identifiants sont les mêmes, ils peuvent être considérés comme un groupe et exécutés séquentiellement de haut en bas ; Dans tous les groupes, plus la valeur de l'ID est grande, plus la priorité est élevée et plus il est exécuté tôt

2. select_type

indique le type de chaque clause select dans la requête

1 SIMPLE : un simple SELECT, UNION ou une sous-requête n'est pas pratique.

2. PRIMAIRE : SÉLECTION la plus externe.

3. UNION : La deuxième couche utilise UNION après SELECT.

4. DEPENDENT UNION : Le deuxième SELECT dans l'instruction UNION dépend de la sous-requête externe.

5. RÉSULTAT DE L'UNION : Le résultat de l'UNION.

6. SOUS-REQUÊTE : Le premier SELECT de la sous-requête.

7. SOUS-REQUÊTE DÉPENDANTE : Le premier SELECT de la sous-requête dépend de la requête externe.

8. DERIVED : SELECT de la table dérivée (sous-requête de la clause FROM)

9. MATERIALIZED : sous-requête matérialisée

10. UNCACHEABLE SUBQUERY : les résultats ne peuvent pas être mis en cache. être recalculé pour chaque ligne de la requête externe

11. UNCACHEABLE UNION : UNION appartient à la deuxième sélection ou aux suivantes d'une sous-requête non cacheable

3. table

Le nom de la table référencée par la ligne de sortie. Cela peut également être l'une des valeurs suivantes :

  • M,N,...> : Cette ligne fait référence à l'union de la valeur d'identifiant M et de la valeur d'identifiant N.
  • N> : Cette ligne fait référence à la valeur N utilisée pour l'identifiant de résultat de la table dérivée de la ligne. Par exemple, une table dérivée peut provenir d'une sous-requête dans la clause FROM
  • N> : la ligne fait référence à l'id Le résultat de la sous-requête matérialisée pour la ligne avec la valeur N

4. type

représente la façon dont MySQL trouve la ligne requise dans la table, également appelée « type d'accès ».

Les types couramment utilisés sont : NULL, system, const, eq_ref, ref, range, index, ALL (de gauche à droite, performances du pire au meilleur)

La liste suivante décrit du meilleur type au Le pire type de connexion

NULL MySQL décompose l'instruction pendant le processus d'optimisation et n'a même pas besoin d'accéder à la table ou à l'index pendant l'exécution, par exemple. la valeur minimale d'une colonne d'index peut être effectuée lorsque la recherche d'index individuelle est terminée.

système Cette table ne comporte qu'une seule ligne (par exemple : table système). Il s'agit d'un cas particulier du type de jointure const

const La table a au plus une ligne correspondante, lue au début de la requête. Puisqu'il n'y a qu'une seule ligne, le reste de l'optimiseur peut traiter les valeurs des colonnes de cette ligne comme des constantes. Les tables const sont très rapides car elles ne sont lues qu'une seule fois.

SELECT * FROM tbl_name WHERE primary_key=1;
SELECT * FROM tbl_name WHERE primary_key_part1=1 AND primary_key_part2=2;
Copier après la connexion

eq_ref Pour chaque combinaison de lignes du tableau précédent, lisez une ligne de ce tableau. Outre les types system et const, c’est le meilleur type de connexion. Il est utilisé lorsque la jointure utilise toutes les parties de l'index et que l'index est un index PRIMARY KEY ou un index UNIQUE NOT NULL.

SELECT * FROM ref_table,other_table
  WHERE ref_table.key_column=other_table.column;

SELECT * FROM ref_table,other_table
    WHERE ref_table.key_column_part1=other_table.column
    AND ref_table.key_column_part2=1;
Copier après la connexion

ref représente la condition de correspondance de connexion du tableau ci-dessus, c'est-à-dire quelles colonnes ou constantes sont utilisées pour trouver la valeur sur la colonne d'index

fulltext utilise l'index FULLTEXT pour effectuer la jointure.

ref_or_null

SELECT * FROM ref_table WHERE key_column IS NULL;
Copier après la connexion

index_merge La méthode d'accès par fusion d'index récupère les analyses de plage avec plusieurs lignes et fusionne leurs résultats en un seul. Cette méthode d'accès combine uniquement les analyses d'index à partir d'une seule table et n'analyse pas plusieurs tables. Une fusion peut produire une union, un croisement ou une union croisée de ses scans sous-jacents

SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;

SELECT * FROM tbl_name
WHERE (key1 = 10 OR key2 = 20) AND non_key = 30;

SELECT * FROM t1, t2
WHERE (t1.key1 IN (1,2) OR t1.key2 LIKE 'value%')
AND t2.key1 = t1.some_col;

SELECT * FROM t1, t2
WHERE t1.key1 = 1
AND (t2.key1 = t1.some_col OR t2.key2 = t1.some_col2);
Copier après la connexion

unique_subquery Ce type remplace certaines sous-requêtes IN par eq_ref de la forme :

value IN (SELECT primary_key FROM single_table WHERE some_expr)
Copier après la connexion

index_subquery Ce type de connexion est similaire à unique_subquery. Elle remplace la sous-requête IN, mais elle fonctionne avec des index non uniques dans une sous-requête de la forme :

value IN (SELECT key_column FROM single_table WHERE some_expr)
Copier après la connexion

range Pour récupérer uniquement les lignes dans une plage donnée, utilisez L'index sélectionne les lignes. La colonne clé dans la ligne de sortie indique quel index utiliser. Contient key_len pour contenir la partie clé qui a été utilisée le plus longtemps. La colonne ref NULL convient à ce type.
plage Lorsqu'une colonne clé utilise n'importe quelle valeur par rapport à une constante, vous pouvez utiliser =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, Opérateur LIKE ou IN() :

index Le type de jointure d'index est le même que ALL, sauf que l'arborescence d'index est analysée. Il existe deux situations :

1. L'arborescence d'index n'est analysée que si l'index est un index de couverture pour la requête et peut être utilisé pour satisfaire toutes les données requises dans la table. Dans ce cas, la colonne Extra indique Utilisation de l'index. Les analyses d'index uniquement sont généralement plus rapides que TOUS les index, qui sont généralement plus petits que les données de la table.

2. Effectuez une analyse complète de la table à l'aide de lectures à partir de l'index pour rechercher les lignes de données dans l'ordre de l'index. L’index des utilisations n’apparaît pas dans la colonne Extra. MySQL peut utiliser ce type de connexion lorsque la requête utilise uniquement des colonnes appartenant à un seul index.

TOUS
Effectuez une analyse complète du tableau pour chaque combinaison de lignes du tableau précédent. Généralement mauvais si la table est la première à ne pas être marquée const, et généralement très mauvaise dans tous les autres cas. En règle générale, vous pouvez TOUS éviter cela en ajoutant un index qui permet la récupération des lignes de la table en fonction d'une valeur constante ou d'une valeur de colonne d'une table antérieure. La colonne indique l'index que MySQL peut choisir pour rechercher les lignes de cette table. quel index MySQL peut utiliser pour trouver l'enregistrement dans la table. Si un index existe sur le champ impliqué dans la requête, l'index sera répertorié, mais il ne sera pas nécessairement utilisé par la requête

Cette colonne. est complètement indépendant de l’ordre des tableaux affichés dans la sortie EXPLAIN. Cela signifie que certaines clés de possible_keys ne peuvent pas réellement être utilisées dans l'ordre de la table générée. Si la colonne est NULL, il n'y a pas d'index associé. Dans ce cas, vous pouvez améliorer les performances de votre requête en vérifiant la clause WHERE pour voir si elle fait référence à certaines colonnes ou colonnes adaptées à l'indexation. Si tel est le cas, créez un index approprié et vérifiez à nouveau la requête avec EXPLAIN

6. Clé


La colonne clé affiche la clé (index) que MySQL a réellement décidé d'utiliser

Si aucun index n'est sélectionné, la clé est NULL. Pour forcer MySQL à utiliser ou ignorer l'index sur la colonne possible_keys, utilisez FORCE INDEX, USE INDEX ou IGNORE INDEX dans la requête.

7. key_len

indique le nombre d'octets utilisés dans l'index La longueur de l'index utilisé dans la requête peut être calculée via cette colonne (la valeur affichée. by key_len est le champ d'index. La longueur maximale possible n'est pas la longueur réelle utilisée, c'est-à-dire que key_len est calculé en fonction de la définition de la table, non extrait de la table)

Sans perte de précision, plus la longueur est courte , mieux c'est

8. ref

indique les conditions de correspondance de connexion du tableau ci-dessus, c'est-à-dire quelles colonnes ou constantes sont utilisées pour trouver la valeur sur l'index. colonne

9, lignes

indique que MySQL estime le nombre de lignes à lire pour trouver les enregistrements requis en fonction des statistiques de la table et de la sélection d'index

10. Extra

La sortie EXPLAIN de la colonne Extra contient des informations supplémentaires permettant à MySQL de résoudre la requête. La liste suivante décrit les valeurs possibles dans cette colonne. Chaque élément indique également à la sortie au format JSON quelle propriété affiche la valeur Extra. Pour certains d’entre eux, il existe une propriété spécifique. Autre texte affiché comme attribut de message

11. partitions (extension)

Enregistrez les partitions qui correspondront à la requête. Cette colonne s'affiche uniquement lors de l'utilisation du mot-clé PARTITIONS. La table non partitionnée affiche null

Cet article se termine ici Pour plus de connaissances sur MySQL, vous pouvez faire attention à la colonne Tutoriel MySQL sur le site Web php chinois ! ! !

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

MySQL: une introduction à la base de données la plus populaire au monde MySQL: une introduction à la base de données la plus populaire au monde Apr 12, 2025 am 12:18 AM

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

Pourquoi utiliser MySQL? Avantages et avantages Pourquoi utiliser MySQL? Avantages et avantages Apr 12, 2025 am 12:17 AM

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.

Comment utiliser un seul fileté redis Comment utiliser un seul fileté redis Apr 10, 2025 pm 07:12 PM

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

MySQL et SQL: Compétences essentielles pour les développeurs MySQL et SQL: Compétences essentielles pour les développeurs Apr 10, 2025 am 09:30 AM

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Place de MySQL: bases de données et programmation Place de MySQL: bases de données et programmation Apr 13, 2025 am 12:18 AM

La position de MySQL dans les bases de données et la programmation est très importante. Il s'agit d'un système de gestion de base de données relationnel open source qui est largement utilisé dans divers scénarios d'application. 1) MySQL fournit des fonctions efficaces de stockage de données, d'organisation et de récupération, en prenant en charge les systèmes Web, mobiles et de niveau d'entreprise. 2) Il utilise une architecture client-serveur, prend en charge plusieurs moteurs de stockage et optimisation d'index. 3) Les usages de base incluent la création de tables et l'insertion de données, et les usages avancés impliquent des jointures multiples et des requêtes complexes. 4) Des questions fréquemment posées telles que les erreurs de syntaxe SQL et les problèmes de performances peuvent être déboguées via la commande Explication et le journal de requête lente. 5) Les méthodes d'optimisation des performances comprennent l'utilisation rationnelle des indices, la requête optimisée et l'utilisation des caches. Les meilleures pratiques incluent l'utilisation des transactions et des acteurs préparés

Comment construire une base de données SQL Comment construire une base de données SQL Apr 09, 2025 pm 04:24 PM

La construction d'une base de données SQL comprend 10 étapes: sélectionner des SGBD; Installation de SGBD; créer une base de données; créer une table; insérer des données; récupération de données; Mise à jour des données; supprimer des données; gérer les utilisateurs; sauvegarde de la base de données.

See all articles