Accéder au contenu principal
Documents
FonctionsExpressionsKeywordsDéclarationsClauses

Mot-clé MySQL EXPLAIN

Le mot-clé `EXPLAIN` de MySQL est utilisé pour obtenir des informations sur la façon dont une instruction `SELECT`, `INSERT`, `UPDATE`, ou `DELETE` est exécutée. Il fournit des informations sur le plan d'exécution de la requête, ce qui aide les développeurs à optimiser les requêtes de la base de données.

Utilisation

Le mot-clé `EXPLAIN` est principalement utilisé pour diagnostiquer et optimiser les requêtes SQL en affichant des détails tels que les balayages de tableaux et l'utilisation des index. Il est placé avant une requête pour indiquer la stratégie d'exécution utilisée par MySQL.

EXPLAIN SELECT column1, column2, ...
FROM table_name
[WHERE condition];

Dans cette syntaxe, `EXPLAIN` précède une requête SQL pour afficher des détails sur la façon dont MySQL prévoit de l'exécuter. Pour les requêtes non-SELECT, `EXPLAIN FORMAT=JSON` est recommandé pour fournir des informations détaillées.

Exemples

1. EXPLAIN de base sur une requête SELECT

EXPLAIN SELECT * FROM orders;

Cet exemple fournit des détails d'exécution, tels que le type de jointure ou l'utilisation de l'index, pour récupérer toutes les colonnes du tableau `orders`.

2. EXPLAIN avec la clause WHERE

EXPLAIN SELECT first_name FROM employees WHERE department_id = 5;

Ici, `EXPLAIN` aide à identifier comment la performance de la requête est influencée par la clause `WHERE`, comme l'utilisation de l'index pour le filtrage.

3. EXPLAIN avec JOIN

EXPLAIN SELECT o.order_id, c.customer_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE c.city = 'New York';

Cet exemple analyse une opération `JOIN`, donnant un aperçu de la façon dont les tableaux sont liés et filtrés par la condition `WHERE`.

4. EXPLAIN avec INSERT, UPDATE ou DELETE

Pour les instructions qui ne sont pas de type "Select", utilisez `EXPLAIN FORMAT=JSON` pour obtenir des informations détaillées :

EXPLAIN FORMAT=JSON INSERT INTO archive SELECT * FROM orders WHERE order_date < '2023-01-01';
EXPLAIN FORMAT=JSON UPDATE employees SET salary = salary * 1.1 WHERE department_id = 5;
EXPLAIN FORMAT=JSON DELETE FROM orders WHERE status = 'canceled';

Colonnes de sortie EXPLAIN communes

  • id : L'identifiant du SELECT dans une requête.
  • select_type: Le type de SELECT, tel que SIMPLE ou PRIMAIRE.
  • tableau: Le nom du tableau auquel la ligne d'édition fait référence.
  • type: Le type de jointure.
  • possible_keys: Les index possibles parmi lesquels MySQL peut choisir.
  • clé: L'index que MySQL a décidé d'utiliser.
  • key_len: La longueur de la clé utilisée.
  • ref : Les colonnes ou constantes comparées à l'index.
  • rangées: L'estimation des rangs examinés.
  • Extra : Informations complémentaires.

Conseils et bonnes pratiques

  • Vérifiez régulièrement les requêtes complexes. Utilisez `EXPLAIN` pour analyser et optimiser les requêtes complexes pour de meilleures performances.
  • Combinez avec `ANALYZE`. Utilisez `ANALYZE TABLE` pour mettre à jour les statistiques de l'index afin d'obtenir des résultats `EXPLAIN` plus précis.
  • Comprendre les colonnes de sortie. Familiarisez-vous avec les colonnes de sortie `EXPLAIN` pour interpréter efficacement les informations sur les performances.
  • Optimisez sur la base des résultats obtenus. Ajustez les index, réécrivez les requêtes ou redessinez les schémas en utilisant les connaissances `EXPLAIN` pour plus d'efficacité.
  • Utilisez `EXPLAIN EXTENDED` ou `EXPLAIN FORMAT=JSON` pour une analyse plus détaillée afin d'adapter les optimisations à des cas d'utilisation spécifiques.

Amélioration de SQL pour les débutants

Acquérir les compétences SQL pour interagir avec vos données et les interroger.
Commencez à apprendre gratuitement