Fügen Sie einen bereits von MySQL erzeugten Plan ein: FORMAT=JSON, einen EXPLAIN-ANALYZE-Baum oder die kopierte Konsolentabelle. Die Seite listet Zugriffsart, gewählten Schlüssel und geschätzte Zeilen je Tabelle und markiert Full Scans, temporäre Tabellen und Filesort. Es wird nichts an eine Datenbank gesendet und keine Anweisung ausgeführt.
Läuft lokal in deinem BrowserDies ist eine schreibgeschützte Planprüfung: Es wird keine Abfrage ausgeführt und kein SQL an MySQL gesendet.
Fügen Sie einen Plan ein, den Sie bereits aus MySQL haben: die FORMAT=JSON-Ausgabe, einen EXPLAIN-ANALYZE-Baum oder die Konsolentabelle des mysql-Clients. Die Seite listet jede gefundene Tabelle mit Zugriffsart, gewähltem Schlüssel und geschätzten Zeilen und markiert vollständige Tabellenscans, temporäre Tabellen und Filesort. Alles läuft im Browser: Es wird keine Anweisung ausgeführt und nichts an eine Datenbank gesendet.
Die Analyse liest die drei Formen, die MySQL selbst ausgibt, und erfindet keine Zahlen: Fehlt eine Zeilenschätzung, steht — in der Spalte statt 0. Schätzwerte stammen aus den Statistiken des Servers und sind die Annahme des Planers, keine Messung der Abfrage.
Zugriffszeilen zählt die Tabelleneinträge, die die Analyse im Plan gefunden hat, nicht die Zeilen, die die Abfrage berührt; ein Eintrag ist eine Zeile in der Tabelle unten. Geschätzte Zeilen summiert die lesbaren rows_examined_per_scan- (oder rows-) Werte und zeigt —, wenn kein Eintrag eine Zahl enthält. Full Scans zählt die Zugriffsart ALL, Indexscans zählt INDEX, und Zugriffe mit Schlüssel zählt die Einträge, bei denen tatsächlich ein Schlüssel gewählt wurde.
Die Tabelle behält die Sprache des Plans: Zugriffsart, gewählter Schlüssel, gefiltert und eine Extra-Spalte, die mögliche Schlüssel nennt, wenn keiner gewählt wurde, dazu Join-Puffer oder angehängte Bedingung. possible_keys ist eine Kandidatenliste und kein gewählter Index, deshalb steht sie nie in der Spalte für den gewählten Schlüssel.
MySQL 8 legt Unterabfragen und materialisierte Views in das table-Objekt (attached_subqueries, materialized_from_subquery). Die Analyse steigt hinein, sodass eine innere Tabelle als eigene Zeile erscheint, und ein Self-Join, der dieselbe Tabelle zweimal scannt, wird zweimal gemeldet statt zusammengefasst.
Die Baumasgabe von EXPLAIN ANALYZE wird Zeile für Zeile gelesen (Table scan, Index scan, Index range scan, Index lookup …); trägt der Baum tatsächliche Zeilen, zeigt die Seite sie neben der Schätzung. Die Konsolenausgabe wird als tabulator- oder pipegetrennte Spalten gelesen, die Tabelle des mysql-Clients kann also direkt eingefügt werden. Pläne mit mehr als 250 Zugriffszeilen werden nach der 250. Zeile abgeschnitten und der Bericht sagt das.
Die Seite kann sich nicht mit MySQL verbinden: Sie führt die Abfrage nicht aus, sieht weder Schema noch Statistiken und kann nicht sagen, ob der Server diesen Plan weiterhin wählen würde. Ein Plan ohne ANALYZE enthält nur Schätzungen, und ein Plan aus einer anderen MySQL-Version kann Schlüssel oder Zugriffsarten nennen, die diese Seite nicht kennt.
Zwischen Läufen wird nichts gespeichert: Eine neue Analyse ersetzt Zähler, Hinweise, Tabelle und Bericht, und Text, der kein EXPLAIN-Plan ist, leert die Bereiche, statt einen alten Bericht stehen zu lassen, den Kopieren übernehmen könnte. Der Bericht wiederholt Format, Zähler und jeden Hinweis, damit die Notizen mit den Zahlen wandern.