Der richtige Index beschleunigt eine Abfrage um das 1000-fache. Ein falscher Index belegt Speicherplatz und verlangsamt Schreibvorgänge.
Indextypen¶
- B-tree: Standard, Equality- und Range-Abfragen
- Hash: Nur Equality (=)
- GIN: JSONB, Array, Volltextsuche
- GiST: Geometrie, Range Types
- BRIN: Große Tabellen mit natürlicher Sortierung
Strategien¶
– Composite Index — Spaltenreihenfolge beachten! – Regel: Equality-Spalten zuerst, dann Range CREATE INDEX idx_orders ON orders(status, created_at DESC); – Covering Index — Index-only Scan CREATE INDEX idx_users_cover ON users(email) INCLUDE (name, role); – Partial Index — nur aktive Datensätze CREATE INDEX idx_active ON users(email) WHERE deleted_at IS NULL; – Analyse ungenutzter Indizes SELECT indexrelname, idx_scan FROM pg_stat_user_indexes WHERE idx_scan = 0 AND indexrelname NOT LIKE ‘%_pkey’;
Wichtigste Erkenntnis¶
Equality zuerst im Composite Index. Partial für Teilmengen, Covering für Index-only Scan. Ungenutzte Indizes entfernen.