GIN-Index
Generalized Inverted Index in PostgreSQL — ein invertierter Index, optimiert für Werte mit mehreren Bestandteilen: Arrays, JSONB, Volltext und Trigramme. Beantwortet schnell die Frage „enthält das dieses Element?".
Einsatzfälle: WHERE tags @> '{postgres}' (Array enthält), JSONB-Schlüsselsuche (data @> '{"status":"active"}'), Volltextsuche (tsvector @@ tsquery), Trigramm-Fuzzysuche (pg_trgm für LIKE '%foo%'). Ein invertierter Index bildet jeden Teilwert auf die Liste der Zeilen ab, die ihn enthalten — genau wie das Stichwortverzeichnis eines Buchs. Kompromiss: schnelle Suche, aber teurere Schreibvorgänge (eine Zeile aktualisiert mehrere Indexeinträge); fastupdate und die GIN-Pending-List mildern das ab. Unterscheidet sich von B-Tree (Gleichheit/Reihenfolge auf dem Gesamtwert) und GiST (Geometrie/Nähe). Der Standardweg für JSONB- und Volltextsuche in Postgres.