GIN (Generalized Inverted Index) świetnie pasuje do zapytań typu „contains” na typach złożonych jak tablice i `jsonb` (np. `@>`, `?`). Indeksuje relację wiele-do-wielu między kluczami a wierszami.
CREATE INDEX idx_events_payload ON events USING GIN (payload);
-- example query (jsonb contains)
SELECT * FROM events WHERE payload @> '{"type":"click"}';