SQL Ausführungsplan-Visualisierer

Füge EXPLAIN-/EXPLAIN-ANALYZE-Ausgaben (PostgreSQL/MySQL/SQLite) ein, um einen Kostenbaum zu erhalten, Abweichungen zwischen geschätzten und tatsächlichen Zeilen zu markieren und Indexvorschläge zu erhalten

Dieses Tool parst die tatsächliche EXPLAIN-Ausgabe — nicht den statischen Abfragetext — und stellt den Ausführungsplan als eingerückten, nach Schweregrad eingefärbten Baum dar.

Unterstützte Eingaben (automatisch oder wählbar):

  • PostgreSQL: JSON aus EXPLAIN (FORMAT JSON, ANALYZE) oder die Standard-TEXT-Ausgabe mit Einrückung.
  • MySQL: Ausgabe von EXPLAIN FORMAT=JSON oder das klassische tabellarische EXPLAIN (id|select_type|table|type|key|rows|Extra).
  • SQLite: Text von EXPLAIN QUERY PLAN (SCAN/SEARCH … USING INDEX …).

Pro Knoten: Knotentyp, Relation, genutzter Index, geschätzte Kosten/Zeit, geschätzte Zeilen und — bei EXPLAIN ANALYZE — tatsächliche Zeilen und Zeit. Abweichungen ≥10× zwischen geschätzten und tatsächlichen Zeilen werden als Statistik-Hotspots markiert.

Diagnosen: Sequential/Full-Table-Scans auf großen Tabellen, Statistik-Divergenz (veralteter ANALYZE), Filesorts, temporäre Tabellen, teure Nested Loops, nicht-sargable Prädikate (Funktionen auf indizierten Spalten), SELECT *, ORDER BY ohne LIMIT — jeweils mit konkretem Index-/Rewrite-Vorschlag (z. B. „Index auf users(email) anlegen").

Tipp: Für die aussagekräftigste Ausgabe unter PostgreSQL EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) bzw. unter MySQL EXPLAIN ANALYZE ausführen, um Schätzung und Wirklichkeit zu vergleichen.

Beispielergebnisse

1 Beispiele

PostgreSQL EXPLAIN ANALYZE mit Zeilenschätzung-Divergenz visualisieren

Seq Scan Schätzung 1000 vs. 95000 tatsächlich — klassischer veralteter-Statistik-Hotspot mit Indexvorschlag.

Execution plan tree with divergence hotspot and index suggestion.
Eingabeparameter anzeigen
{ "explainOutput": "[\n {\n \"Plan\": {\n \"Node Type\": \"Seq Scan\",\n \"Relation Name\": \"users\",\n \"Alias\": \"users\",\n \"Filter\": \"((email)::text = '[email protected]')\",\n \"Plan Rows\": 1000,\n \"Plan Width\": 142,\n \"Total Cost\": 1541.00,\n \"Actual Rows\": 95000,\n \"Actual Loops\": 1,\n \"Actual Startup Time\": 0.1,\n \"Actual Total Time\": 12.4\n }\n }\n]", "dialect": "auto", "sql": "SELECT * FROM users WHERE lower(email) = '[email protected]'", "maxDepth": 20 }

Wichtige Fakten

Kategorie
Entwicklung & Web
Eingabetypen
textarea, select, number
Ausgabetyp
html
Sample-Abdeckung
4
API verfügbar
Yes

Überblick

Der SQL Ausführungsplan-Visualisierer parst die EXPLAIN- und EXPLAIN-ANALYZE-Ausgaben von PostgreSQL, MySQL und SQLite, um komplexe Ausführungspläne in einem übersichtlichen, farbcodierten Kostenbaum darzustellen und Optimierungspotenziale wie fehlende Indizes direkt aufzuzeigen.

Wann verwenden

  • Wenn eine SQL-Abfrage unerwartet langsam ausgeführt wird und die genaue Ursache im Ausführungsplan analysiert werden soll.
  • Zur Erkennung von Abweichungen zwischen geschätzten und tatsächlichen Zeilenzahlen nach einem EXPLAIN ANALYZE.
  • Um langsame Full-Table-Scans, teure Filesorts oder ungeeignete Join-Operationen in PostgreSQL, MySQL oder SQLite schnell zu identifizieren.

So funktioniert es

  • Kopieren Sie die EXPLAIN- oder EXPLAIN-ANALYZE-Ausgabe als Text oder JSON aus Ihrer Datenbank und fügen Sie sie in das Eingabefeld ein.
  • Wählen Sie den passenden SQL-Dialekt aus oder lassen Sie das Tool das Format automatisch erkennen.
  • Das Tool analysiert die Struktur und visualisiert den Ausführungsplan als hierarchischen, nach Kosten gewichteten Baum.
  • Kritische Engpässe wie hohe Abweichungen bei den Zeilenschätzungen oder fehlende Indizes werden farblich hervorgehoben und mit konkreten Optimierungsvorschlägen versehen.

Anwendungsfälle

Optimierung langsamer Berichte durch das Aufspüren von Sequential Scans auf großen Tabellen.
Behebung von Performance-Problemen nach Datenimporten durch Identifikation veralteter Statistiken.
Analyse von verschachtelten Schleifen (Nested Loops) und temporären Tabellen bei komplexen JOIN-Abfragen.

Beispiele

1. PostgreSQL Seq Scan Behebung

Backend-Entwickler
Hintergrund
Eine Abfrage auf der Tabelle 'users' dauert mehrere Sekunden, obwohl nur nach einer bestimmten E-Mail-Adresse gefiltert wird.
Problem
Die Abfrage führt einen langsamen Sequential Scan durch, da kein passender Index existiert.
Verwendung
Fügen Sie die JSON-Ausgabe von EXPLAIN (ANALYZE, FORMAT JSON) in das Tool ein und wählen Sie PostgreSQL als Dialekt.
Beispielkonfiguration
{
  "explainOutput": "[{\"Plan\": {\"Node Type\": \"Seq Scan\", \"Relation Name\": \"users\", \"Filter\": \"((email)::text = '[email protected]')\", \"Plan Rows\": 1000, \"Actual Rows\": 95000}} ]",
  "dialect": "postgresql"
}
Ergebnis
Das Tool visualisiert den Seq Scan rot, markiert die Abweichung der Zeilenschätzung und empfiehlt das Anlegen eines Index auf users(email).

2. MySQL Filesort Optimierung

Datenbank-Administrator
Hintergrund
Eine Sortierabfrage mit ORDER BY führt zu hoher CPU-Last auf dem MySQL-Server.
Problem
Die EXPLAIN-Ausgabe zeigt die Nutzung von 'Using filesort' und einer temporären Tabelle.
Verwendung
Fügen Sie die tabellarische EXPLAIN-Ausgabe der MySQL-Abfrage ein.
Beispielkonfiguration
{
  "explainOutput": "id|select_type|table|type|key|rows|Extra\n1|SIMPLE|orders|ALL|NULL|50000|Using filesort",
  "dialect": "mysql"
}
Ergebnis
Das Tool hebt den Filesort hervor und schlägt einen passenden Index vor, um die Sortierung direkt über die Speicherstruktur abzuwickeln.

Mit Samples testen

json, sql, text

Verwandte Hubs

FAQ

Welche SQL-Datenbanken werden unterstützt?

Das Tool unterstützt EXPLAIN-Ausgaben von PostgreSQL (Text und JSON), MySQL (Text und JSON) sowie SQLite.

Was bedeutet eine hohe Abweichung bei den Zeilenzahlen?

Wenn die geschätzten Zeilen stark von den tatsächlichen abweichen (Faktor 10 oder mehr), sind oft die Tabellenstatistiken veraltet, was zu suboptimalen Abfrageplänen führt.

Muss ich die SQL-Abfrage zwingend eingeben?

Nein, die Angabe der SQL-Abfrage ist optional. Das Tool benötigt primär die EXPLAIN-Text- oder JSON-Ausgabe zur Visualisierung.

Wie erhalte ich die detaillierteste Analyse für PostgreSQL?

Führen Sie die Abfrage mit dem Befehl 'EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)' aus, um präzise Laufzeit- und Puffer-Statistiken zu erhalten.

Zeigt das Tool konkrete Indexvorschläge an?

Ja, bei erkannten Sequential Scans oder unvollständigen Suchpfaden schlägt das Tool spezifische Indizes für die betroffenen Spalten vor.

API-Dokumentation

Request-Endpunkt

POST /de/api/tools/sql-explain-plan-visualizer

Request-Parameter

Parameter-Name Typ Erforderlich Beschreibung
explainOutput textarea Ja -
dialect select Nein -
sql textarea Nein -
maxDepth number Nein -

Antwortformat

{
  "result": "
Processed HTML content
", "error": "Error message (optional)", "message": "Notification message (optional)", "metadata": { "key": "value" } }
HTML: HTML

MCP-Dokumentation

Fügen Sie dieses Tool zu Ihrer MCP-Server-Konfiguration hinzu:

{
  "mcpServers": {
    "elysiatools-sql-explain-plan-visualizer": {
      "name": "sql-explain-plan-visualizer",
      "description": "Füge EXPLAIN-/EXPLAIN-ANALYZE-Ausgaben (PostgreSQL/MySQL/SQLite) ein, um einen Kostenbaum zu erhalten, Abweichungen zwischen geschätzten und tatsächlichen Zeilen zu markieren und Indexvorschläge zu erhalten",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=sql-explain-plan-visualizer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Sie können mehrere Tools verketten, z.B.: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, maximal 20 Tools.

Wenn Sie auf Probleme stoßen, kontaktieren Sie uns bitte bei [email protected]