Collez un plan déjà obtenu de MySQL : FORMAT=JSON, un arbre EXPLAIN ANALYZE ou la table copiée de la console. La page liste le type d’accès, la clé retenue et les lignes estimées de chaque table, et signale les scans complets, les tables temporaires et les filesort. Rien n’est envoyé à une base et aucune instruction n’est exécutée.
Fonctionne localement dans votre navigateurCette revue de plan est en lecture seule : aucune requête n’est exécutée et aucun SQL n’est envoyé à MySQL.
Collez un plan déjà obtenu de MySQL : la sortie FORMAT=JSON, un arbre EXPLAIN ANALYZE ou la table de console du client mysql. La page liste chaque table trouvée avec son type d’accès, la clé retenue et les lignes estimées, et signale les scans complets de table, les tables temporaires et le filesort. Tout s’exécute dans le navigateur : aucune instruction n’est lancée et rien n’est envoyé à une base de données.
L’analyse lit les trois formes que MySQL imprime lui-même et n’invente aucun chiffre : quand le plan ne porte pas d’estimation de lignes, la colonne affiche — au lieu de 0. Les estimations viennent des statistiques du serveur : c’est l’hypothèse du planificateur, pas une mesure de la requête.
Lignes d’accès compte les entrées de table que l’analyse a trouvées dans le plan, pas les lignes parcourues par la requête ; une entrée correspond à une ligne du tableau. Lignes estimées additionne les valeurs rows_examined_per_scan (ou rows) qu’elle peut lire et affiche — quand aucune entrée ne porte de nombre. Scans complets compte le type d’accès ALL, scans d’index compte INDEX, et accès par clé compte les entrées où une clé a réellement été retenue.
Le tableau garde la terminologie du plan : type d’accès, clé retenue, filtré, et une colonne extra qui nomme les clés possibles quand aucune n’a été choisie, la mémoire tampon de jointure ou la condition attachée. possible_keys est une liste de candidates, pas un index retenu : elle n’apparaît donc jamais dans la colonne de la clé retenue.
MySQL 8 place les sous-requêtes et les vues matérialisées dans l’objet table (attached_subqueries, materialized_from_subquery). L’analyse y descend : une table interne apparaît donc comme une ligne à part, et une auto-jointure qui scanne deux fois la même table est signalée deux fois au lieu d’être fusionnée.
La sortie en arbre d’EXPLAIN ANALYZE est lue ligne à ligne (Table scan, Index scan, Index range scan, Index lookup…), et lorsque l’arbre porte des lignes réelles la page les affiche à côté de l’estimation. La sortie console est lue en colonnes séparées par tabulations ou barres : la table du client mysql peut être collée telle quelle. Les plans de plus de 250 lignes d’accès sont coupés après la 250e et le rapport le signale.
La page ne peut pas se connecter à MySQL : elle n’exécute pas la requête, ne voit ni le schéma ni les statistiques, et ne peut pas dire si le serveur choisirait encore ce plan. Un plan pris sans ANALYZE ne contient que des estimations, et un plan d’une autre version de MySQL peut nommer des clés ou des types d’accès que cette page ne connaît pas.
Rien n’est conservé entre deux analyses : une nouvelle remplace les compteurs, les constats, le tableau et le rapport, et un texte qui n’est pas un plan EXPLAIN vide les panneaux au lieu de laisser un ancien rapport que Copier pourrait livrer. Le rapport reprend le format, les compteurs et chaque constat : les notes voyagent avec les chiffres.