Der Ausführungsplan (EXPLAIN) zeigt, wie eine Datenbank eine SQL-Abfrage tatsächlich ausführen will: in welcher Reihenfolge Tabellen gelesen, welche Zugriffspfade und Join-Verfahren genutzt und welche Kosten geschätzt werden. Er ist das wichtigste Werkzeug, um langsame Abfragen zu verstehen und zu beschleunigen.

Was steht in einem Ausführungsplan?

Die Datenbank zerlegt jede Anfrage in einzelne Schritte und zeigt sie als Baum an — von innen nach außen zu lesen. Typische Bestandteile:

  • Zugriffspfad: Sequential Scan (komplette Tabelle lesen), Index Scan (über einen Index suchen) oder Index Only Scan.
  • Join-Verfahren: Nested Loop, Hash Join oder Merge Join — je nach Datenmenge und Sortierung.
  • Kostenschätzungen: geschätzte Zeilenzahlen und Kostenwerte, die der Query-Optimierer berechnet hat.

EXPLAIN und EXPLAIN ANALYZE

Fast alle Datenbanksysteme bieten EXPLAIN an: SQL-Server- und Oracle-Umgebungen zeigen den Plan über EXPLAIN PLAN, PostgreSQL und MySQL über EXPLAIN. Der Unterschied liegt im Detail:

  • EXPLAIN zeigt nur den geschätzten Plan.
  • EXPLAIN ANALYZE führt die Abfrage zusätzlich aus und zeigt tatsächliche Laufzeiten und Zeilenzahlen je Schritt.

Weicht die Schätzung stark von der Realität ab, sind die Statistiken der Datenbank oft veraltet — ein Hinweis, sie zu aktualisieren (etwa ANALYZE in PostgreSQL).

Typische Erkenntnisse

  • Ein Sequential Scan über eine große Tabelle verrät: Hier fehlt ein passender Index.
  • Ein teurer Nested-Loop-Join in der falschen Reihenfolge zeigt, dass der Optimierer die Join-Reihenfolge nicht gut wählen konnte.
  • Ein geplanter, aber nicht genutzter Index deutet auf Selektivitätsprobleme hin.

Verwandte Grundlagen: Query-Optimierung, Datenbank-Indizes, Query, SQL, Materialisierte Sicht.