Engineering
Datenbankindizierung erklärt
Warum Ihre Abfragen langsam sind und wie der richtige Index das behebt – B-Trees, zusammengesetzte Indizes und die EXPLAIN-Gewohnheit, die jeder Entwickler entwickeln sollte.

Fast jede „die Datenbank ist langsam"-Beschwerde, die wir untersuchen, geht auf einen fehlenden oder falsch eingesetzten Index zurück. Indizierung ist die wirkungsvollste Performance-Kompetenz, die ein Entwickler besitzen kann – und dennoch wird sie oft als undurchsichtige Kunst behandelt. Das ist sie nicht. Sobald Sie verstehen, was ein Index tatsächlich ist und wie man einen Query-Plan liest, können Sie eine zehn Sekunden dauernde Abfrage gezielt – nicht zufällig – in eine zehn Millisekunden schnelle verwandeln.
Was ein Index wirklich ist
Stellen Sie sich einen Index wie das Stichwortverzeichnis am Ende eines Buches vor. Ohne es müssen Sie jede Seite lesen, um alle Erwähnungen eines Themas zu finden – ein Sequential Scan. Mit ihm springen Sie direkt zu den richtigen Seiten. In einer Datenbank ist ein Index eine separate, sortierte Datenstruktur, die es der Engine erlaubt, Zeilen zu finden, ohne die gesamte Tabelle zu durchsuchen.
Die meisten Indizes sind B-Trees, die Werte sortiert halten, sodass die Datenbank sie per Binary Search durchsuchen kann. Deshalb beschleunigt ein B-Tree-Index Gleichheitsabfragen (=), Bereichsabfragen (<, >, BETWEEN), Sortierungen und Präfixsuchen – hilft aber nicht bei einem führenden Platzhalter wie LIKE '%foo'.
Indizieren Sie, wonach Sie filtern, joinen und sortieren
Die Faustregel: Jede Spalte, die regelmäßig in einer WHERE-Klausel, einer JOIN-Bedingung oder einem ORDER BY auftaucht, ist ein Kandidat für einen Index. Foreign Keys lohnen sich fast immer, da Sie ständig über sie joinen werden.
Für Abfragen, die auf mehrere Spalten filtern, schlägt ein zusammengesetzter Index über mehrere Spalten einzelne Einzelspalten-Indizes. Die Reihenfolge der Spalten spielt dabei eine entscheidende Rolle: Ein Index auf (tenant_id, created_at) hilft bei Abfragen, die nur nach tenant_id oder nach beiden Spalten filtern – nicht aber bei Abfragen, die nur nach created_at filtern. Setzen Sie die selektivste und am häufigsten gefilterte Spalte an erste Stelle.
Lernen Sie, EXPLAIN zu lesen
Sie müssen nie raten, ob ein Index verwendet wird. In PostgreSQL führen Sie EXPLAIN ANALYZE auf Ihrer Abfrage aus und lesen den Plan:
- Seq Scan auf einer großen Tabelle in einer häufig aufgerufenen Abfrage ist ein Warnsignal – die Datenbank liest alles durch.
- Index Scan oder Index Only Scan bedeutet, dass Ihr Index seine Arbeit erledigt.
- Die geschätzten Zeilenzahlen im Vergleich zu den tatsächlichen zeigen Ihnen, ob die Statistiken des Planners korrekt sind.
Machen Sie EXPLAIN ANALYZE zur Gewohnheit – vor und nach dem Hinzufügen eines Indexes. Das verwandelt Performance-Arbeit von Rätselraten in echte Messung.
Indizes sind nicht kostenlos
Es ist verlockend, alles zu indizieren – aber jeder Index hat seinen Preis. Indizes belegen Speicherplatz, und vor allem muss jedes INSERT, UPDATE und DELETE jeden betroffenen Index aktualisieren. Zu viele Indizes auf einer schreibintensiven Tabelle verlangsamen genau die Operationen, auf die es Ihnen ankommt.
Indizieren Sie deshalb gezielt:
- Fügen Sie Indizes hinzu, um echte, gemessene langsame Abfragen zu unterstützen – keine hypothetischen.
- Löschen Sie regelmäßig Indizes, die nichts verwendet (Postgres erfasst Nutzungsstatistiken für Indizes).
- Achten Sie auf redundante Indizes, bei denen ein zusammengesetzter Index einen Einzelspalten-Index bereits abdeckt.
Entwickeln Sie die Gewohnheit
Die gesamte Disziplin passt in eine einzige Schleife: Schreiben Sie die Abfrage, führen Sie EXPLAIN ANALYZE aus, fügen Sie den Index hinzu, den der Plan einfordert, und messen Sie erneut. Wer das konsequent tut, wird kaum noch Feuerwehreinsätze wegen einer lahmen Datenbank erleben. Teams, die damit kämpfen, fehlt kein Geheimwissen – sie haben einfach nie einen Query-Plan angeschaut.
Wenn Ihre Anwendung kriecht und Sie die Datenbank im Verdacht haben, sprechen Sie uns an.
So kann Pykero helfen
Leistungen passend zu diesem Artikel.
Sie planen etwas Ähnliches?
Pykero Agency entwirft und liefert produktionsreife Web-, Mobile-, SaaS- und KI-Produkte.
Sprechen Sie mit uns


