GIN (Generalized Inverted Index) is great for “contains” queries on composite types like arrays and `jsonb` (e.g., `@>`, `?`). It indexes many-to-many relationships between keys and rows.
CREATE INDEX idx_events_payload ON events USING GIN (payload);
-- example query (jsonb contains)
SELECT * FROM events WHERE payload @> '{"type":"click"}';