한 값 안의 여러 항목을 역색인해
GIN은 JSONB의 키와 값, 배열 원소, tsvector의 낱말처럼 한 열 안에 여러 검색 대상을 가진 자료에 맞아. 포함 연산자 @>를 빠르게 처리해. 수백만 문서 규모에서는 tsvector와 GIN만으로도 Elasticsearch를 별도로 두지 않아도 될 수 있어.
연산자 클래스가 저장 범위를 정해
jsonb_path_ops는 주로 @> 포함 질의에 집중해 더 작을 수 있지만 모든 JSONB 연산을 지원하지는 않아. 어떤 연산자를 실제로 쓰는지 먼저 확인해.
읽기 이득과 쓰기 비용을 함께 봐
GIN은 많은 항목을 기록하므로 B-tree보다 만들고 갱신하는 비용이 클 수 있어. 또 다른 @> 질의가 있다고 해서 같은 설정이 항상 맞는 것도 아니야.