GIN — Generalised Inverted iNdex
B-tree 가 행당 한 값 인덱스. GIN 이 행당 여러 값 인덱스 — 텍스트 필드 안 단어들, JSONB document 안 키들, array 안 요소들. 'inverted' 부분 의미: 각 값에 대해 GIN 이 그 값 포함하는 행 리스트 저장 (책 색인이랑 같음).
JSONB containment
JSONB 의 GIN 킬러 use case 가 containment 연산자 @>: "이 sub-document 포함하는 JSONB 행". GIN 인덱스 없으면 모든 행 파싱 + 체크. 있으면 직접 lookup.
Full-text search
tsvector 컬럼의 GIN 이 "이 단어들 포함하는 document 행" 을 ms 단위로 답함, 수백만 article 에서 — Elasticsearch 불필요.