Indexe & Performance
Index‑Typen:
- B‑Tree: Default, gut für = und Range‑Abfragen.
- Hash: nur =, sehr schnell, kein Range.
- GIN/GiST (Postgres): Full‑Text, JSONB, Geo.
- BRIN: für sehr große, sortierte Tabellen (Time Series).
- Vector‑Index (HNSW, IVF): für Embeddings.
Query‑Tuning Routine:
EXPLAIN ANALYZE— was passiert wirklich?- Sequential Scan auf großer Tabelle? → Index fehlt.
- Nested Loop bei Mio. Rows? → Hash Join besser.
- Statistiken aktuell? → ANALYZE.
- Fehlende Constraints? → Optimizer kann nicht planen.
Anti‑Pattern:
SELECT *in Production — explizit Spalten nennen.WHERE LOWER(email) = ?ohne functional Index.- N+1 Queries (1 Query pro Row in Schleife).
- Keine Pagination → Speicherüberlauf.
- Indexe auf jeder Spalte → Inserts werden langsam.
Zurück zu Technik