Cours SQL et MySQL · Module 9: Index et normalisation
EXPLAIN - le plan d'exécution
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.
ALLsignifie un parcours complet de table (mauvais signe !), tandis querefouconstsignifie qu'un index est utilisé (bon signe !). - key - quel index a été utilisé. Si tu vois
NULLici, 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. À quoi sert la commande EXPLAIN placée avant une requête SELECT ?
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 :