Langsame SQL-Abfrage anhand von EXPLAIN ANALYZE diagnostizieren
Lies den Ausführungsplan einer langsamen SQL-Abfrage Knoten für Knoten, finde den Engpass und erhalte konkrete Indizes oder Umformulierungen samt Kosten beim Schreiben. Entwickelt für ChatGPT, Claude, Gemini und Microsoft Copilot. Er enthält 5 anpassbare Variablen und lässt sich kostenlos mit einem Klick kopieren.
Experte · Code · Redaktionelle Prüfung ausstehend
Prompt
Handle als DBA und Performance-Experte für {{engine}}.
Ich habe eine langsame Abfrage. Hier die Daten:
- Abfrage:
{{abfrage}}
- EXPLAIN-Ausgabe (idealerweise EXPLAIN ANALYZE mit BUFFERS oder FORMAT=TREE):
{{plan}}
- Tabellen, vorhandene Indizes und ungefähre Zeilenzahlen: {{schema}}
- Ausführungshäufigkeit und akzeptable Laufzeit: {{kontext}}
Liefere:
1. Eine verständliche Lesart des Plans, vom innersten Knoten nach außen: was jeder Knoten tut, geschätzte gegenüber tatsächlichen Zeilen und sein Zeitanteil.
2. Den Hauptengpass und weitere Engpässe, jeweils mit dem Beleg aus dem Plan (sequenzieller Scan, stark abweichende Schätzungen, Sortierung auf Platte, Nested Loop über viele Zeilen, spät angewendeter Filter, Funktion auf indizierter Spalte usw.).
3. Korrekturen, sortiert nach erwartetem Nutzen und Aufwand:
- Indizes mit exaktem `CREATE INDEX` (begründete Spaltenreihenfolge, partielle oder abdeckende Indizes, wo sinnvoll, und nicht blockierende Erstellung, wenn die Engine das kann).
- Eine Umformulierung der Abfrage, falls sie den Plan verbessert (z. B. `EXISTS` statt `IN`, Keyset-Pagination, kein `OR` über verschiedene Spalten).
- Statistiken oder Konfiguration (ANALYZE, erweiterte Statistiken, Arbeitsspeicher) nur, wenn der Plan es rechtfertigt.
4. Die Kosten jedes Index: Speicherplatz, Auswirkung auf INSERT/UPDATE und ob er einen vorhandenen Index dupliziert.
5. Die Überprüfung: was erneut auszuführen ist und welche Änderung im Plan zu sehen sein sollte.
Einschränkungen:
- Stütze jede Aussage auf den Plan; versprich keine Verbesserungen in Prozent oder Millisekunden.
- Wenn ich nur EXPLAIN ohne ANALYZE habe oder Schemadetails fehlen, sag es und frag nach, bevor du Indizes empfiehlst.
- Warne mich, wenn eine Maßnahme in der Produktion Tabellen sperrt.So verwenden Sie ihn
- Führe EXPLAIN ANALYZE (bei PostgreSQL mit BUFFERS) auf einer Umgebung mit realistischen Daten aus, nicht auf einer leeren.
- Füge Abfrage, vollständigen Plan sowie Tabellen- und Indexdefinitionen ein.
- Setze die wirksamste Korrektur zuerst im Staging um und vergleiche den neuen Plan.
Anwendungsbeispiel
Engine: PostgreSQL 16 · Abfrage: Bestellungen eines Kunden der letzten 90 Tage, nach Datum sortiert · Tabelle bestellungen: 12 Mio. Zeilen · 300 Aufrufe pro Minute.
Beispielergebnis
1. Den Plan lesen
- Seq Scan on bestellungen — liest ~11,9 Mio. Zeilen, um die eines Kunden herauszufiltern. Kein Index beginnt mit
kunden_id. - Sort (external merge, Disk: 48MB) — sortiert nach
erstellt_amauf der Platte, weilwork_memnicht reicht. - Limit — von all dem werden nur 20 Zeilen gebraucht.
2. Engpass
Der sequenzielle Scan ist das Hauptproblem; die Plattensortierung ist seine Folge. Der Plan ist gekürzt (Filter: ...) – prüfen Sie die tatsächlichen Zeilen mit EXPLAIN (ANALYZE, BUFFERS).
3. Empfohlene Lösung
-- Gleichheitsspalte zuerst, dann Bereichs-/Sortierspalte:
-- der Index liefert die Zeilen bereits sortiert, Limit stoppt bei 20
CREATE INDEX CONCURRENTLY idx_bestellungen_kunde_erstellt
ON bestellungen (kunden_id, erstellt_am DESC);
ANALYZE bestellungen;
CONCURRENTLY blockiert keine Schreibzugriffe, dauert aber länger und läuft nicht innerhalb einer Transaktion (Vorsicht bei Migrationstools, die standardmäßig eine öffnen).
4. Kosten
| Aspekt | Auswirkung |
|---|---|
| Speicher | Proportional zu 12 Mio. Einträgen mit zwei Spalten |
| Schreiblast | Ein weiterer Index bei jedem INSERT |
| Duplikate | Überschneidet sich nicht mit dem Index auf status |
5. Prüfung
EXPLAIN erneut ausführen: Erwartet wird Index Scan using idx_bestellungen_kunde_erstellt, der Sort-Knoten sollte verschwinden…
Wichtige Fakten
- Kategorie
- Programmierung & Entwicklung · SQL
- Ausgabetyp
- Code
- Niveau
- Experte
- Entwickelt für
- ChatGPT, Claude, Gemini und Microsoft Copilot
- Verifiziert in
- Redaktionelle Prüfung ausstehend
- Variablen
- Datenbank-Engine, SQL-Abfrage, Ausführungsplan, Tabellen, Indizes und Volumen und Häufigkeit und Ziel
- Sprache
- Deutsch
- Preis
- Kostenlos, ohne Anmeldung
- Aktualisiert
- 07.11.2026
Häufig gestellte Fragen
Warum EXPLAIN ANALYZE und nicht nur EXPLAIN?
EXPLAIN zeigt nur Schätzungen. EXPLAIN ANALYZE führt die Abfrage aus und zeigt echte Zeilen und Zeiten; die Abweichung ist der wichtigste Hinweis. Weil wirklich ausgeführt wird, UPDATE oder DELETE nur in einer Transaktion mit Rollback testen.
Machen mehr Indizes die Datenbank immer schneller?
Nein. Jeder Index braucht Platz und bremst Schreibvorgänge. Deshalb fragt der Prompt nach den Kosten jedes Index und prüft auf Duplikate.
Wofür ist dieser Prompt gedacht?
Lies den Ausführungsplan einer langsamen SQL-Abfrage Knoten für Knoten, finde den Engpass und erhalte konkrete Indizes oder Umformulierungen samt Kosten beim Schreiben.
Mit welchen KI-Tools funktioniert er?
Er ist für ChatGPT, Claude, Gemini und Microsoft Copilot entwickelt. Wir haben ihn in diesen Tools noch nicht überprüft, daher können die Ergebnisse variieren.
Wie passe ich den Prompt an?
Klicken Sie auf „Anpassen“ und füllen Sie die Variablen aus (Datenbank-Engine, SQL-Abfrage, Ausführungsplan, Tabellen, Indizes und Volumen und Häufigkeit und Ziel). Der Text wird sofort aktualisiert und lässt sich anschließend mit einem Klick kopieren. Die Werte werden nur in Ihrem Browser gespeichert.
Brauche ich Erfahrung, um ihn zu verwenden?
Er ist für Experten: Er richtet sich an Personen mit Erfahrung im Thema, die das Ergebnis beurteilen und anpassen können.
Ist dieser Prompt kostenlos?
Ja. Jeder Prompt von HomeCasa Prompts ist kostenlos, ohne Anmeldung und ohne Abonnement. Sie können ihn auch in beruflichen Projekten verwenden.
Kann ich der KI-Ausgabe vertrauen?
Betrachten Sie sie als hochwertigen Entwurf: Prüfen Sie Daten, Zahlen und wichtige Aussagen immer, bevor Sie etwas veröffentlichen oder Entscheidungen treffen.