Résumé de l'utilisation d'Explain dans MySQL (détaillé)
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
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 cacheable3. 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;
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;
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;
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);
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)
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)
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_lenindique 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. refindique 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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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.

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

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

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.
