Cours SQL et MySQL · Module 9: Index et normalisation

EXPLAIN - le plan d'exécution

2 min de lecture
Dans cette leçon4

Comment savoir si la Bibliothèque utilise un catalogue ou parcourt laborieusement les rayons un par un ? Tu demandes le plan d'exécution avec la commande EXPLAIN.

Comment cela fonctionne

Ajoute EXPLAIN avant n'importe quelle requête SELECT :

1EXPLAIN SELECT * FROM ksiazki WHERE tytul = 'Iliada';

MySQL n'exécutera pas la requête, mais montrera comment il compte l'exécuter - comme si tu jetais un œil au plan du bibliothécaire avant qu'il ne se lance parmi les rayons.

Ce que nous lisons dans le plan

EXPLAIN renvoie une table avec plusieurs colonnes. Pour commencer, deux comptent le plus :

  • type - la méthode d'accès. ALL signifie un parcours complet de table (mauvais signe !), tandis que ref ou const signifie qu'un index est utilisé (bon signe !).
  • key - quel index a été utilisé. Si tu vois NULL ici, aucun catalogue n'a aidé et la base de données lit tout.

Un exemple de raisonnement

Lance EXPLAIN sans index sur tytul - tu verras type: ALL, key: NULL. La base de données balaie chaque parchemin.

Crée l'index idx_tytul, relance EXPLAIN - maintenant type: ref, et idx_tytul apparaît dans key. La Bibliothèque a consulté le catalogue au lieu d'errer dans les rayons.

À quoi cela sert-il

EXPLAIN est ton outil de diagnostic. Quand une requête s'exécute lentement, vérifie d'abord son plan. Si tu vois un parcours complet là où tu filtres par une colonne - c'est le signe qu'un index aiderait. Un bon scribe vérifie toujours le plan avant d'accuser la Bibliothèque d'être lente !

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. À quoi sert la commande EXPLAIN placée avant une requête SELECT ?

  2. 2. Dans un plan EXPLAIN, que signifie une valeur ALL dans la colonne type ?

Voici 2 des 3 questions de cette leçon. Réponds aux autres dans le jeu.

Tâches pratiques dans le jeu

  • Éditeur de code

    Écris une commande qui affiche le plan d'exécution d'une requête récupérant toutes les colonnes de la table ksiazki où tytul vaut 'Iliada'. Utilise EXPLAIN.

  • Éditeur de code

    Écris une commande avec EXPLAIN qui affiche le plan d'une requête récupérant toutes les colonnes de la table autorzy où nazwisko vaut 'Homer'.

  • Clique dans l'ordre

    Clique sur les éléments dans l'ordre pour construire la commande qui vérifie le plan d'une requête :