PostgreSQL-Abfragen optimieren: EXPLAIN und gezielte Indizes

  • 14 Okt 2025
  • CODLAB Team
  • 2 min

Eine langsame Datenbankabfrage lässt sich erst sinnvoll verbessern, wenn Sie ihre Aufgabe und ihren Ausführungsplan kennen. Halten Sie die Abfrage, die Parameter und die Größe des betroffenen Bestands fest. Ein Index ist eine mögliche Maßnahme, keine allgemeine Lösung für jede langsame Seite.

Mit einem Plan beginnen

EXPLAIN zeigt den vom Planer gewählten Ablauf. Die Kosten darin sind Schätzwerte und keine gemessenen Millisekunden. Im Beispiel muss die Tabelle benutzer mit dem Feld benutzername bereits existieren.

-- Verwenden von EXPLAIN mit einer einfachen Abfrage
EXPLAIN SELECT * FROM benutzer WHERE benutzername = 'MaxMustermann';

Untersuchen Sie Filter, Join-Schritte und Sortierungen. Wenn Sie tatsächliche Laufzeiten und Zeilenzahlen benötigen, führt EXPLAIN ANALYZE die Abfrage aus. Verwenden Sie es mit Bedacht: Auch eine Änderung von Daten würde dabei ausgeführt. Für die Untersuchung eignet sich eine kontrollierte Testumgebung mit passenden Daten.

Einen Index aus der Abfrage ableiten

Die Suche nach einem Benutzernamen ist ein einfaches Beispiel für einen möglichen Index. Prüfen Sie vor dem Anlegen, ob bereits ein passender Index oder eine Eindeutigkeitsbedingung existiert.

-- Einen Index für die Spalte 'benutzername' in der Tabelle 'benutzer' erstellen
CREATE INDEX idx_benutzername ON benutzer (benutzername);

Der Nutzen hängt unter anderem von Datenverteilung und Ergebnismenge ab. Ein sequentieller Scan kann bei einer kleinen Tabelle oder einer breiten Auswahl sinnvoll sein. Jeder zusätzliche Index benötigt Speicher und muss bei Datenänderungen gepflegt werden. Übertragen Sie deshalb einen Befund aus einem kleinen Beispiel nicht ungeprüft auf die Produktion.

Das Ergebnis mit derselben Aufgabe kontrollieren

Vergleichen Sie den Plan und die Laufzeit vor und nach der Änderung mit denselben fachlichen Eingaben. Berücksichtigen Sie sowohl häufige als auch seltene Suchwerte. Prüfen Sie, ob Statistiken zur aktuellen Datenlage passen und ob gleichzeitig andere Zugriffe oder Wartungsarbeiten stattfinden.

Dokumentieren Sie den gemessenen Engpass, die gewählte Änderung und ihren Effekt. So bleibt die Entscheidung nachvollziehbar, wenn sich der Bestand oder die Abfrage später verändert.

Weiterführende Dokumentation: PostgreSQL: Using EXPLAIN.

Teilen Sie diesen Artikel

Kunden

Noch keine Kommentare. Schreiben Sie den ersten!

Einen Kommentar hinterlassen

Wird nicht veröffentlicht

Verwandte Artikel

Projekt im Kopf?

Wir entwickeln maßgeschneiderte Software und KI-Lösungen. Lassen Sie uns gemeinsam Ihr nächstes Projekt starten.

Kostenloses Erstgespräch