본문 바로가기
Q&A해결2026년 4월 2일1분 읽기

PostgreSQL에서 JSON 필드 검색이 느린데 인덱스를 어떻게 거나요?

백
백엔드주니어
조회 496댓글 5

PostgreSQL에 JSON 데이터를 저장하고 있는데, WHERE data->>'name' = 'test' 쿼리가 너무 느립니다.

테이블에 50만 건 정도 있고, JSONB 타입을 쓰고 있습니다. GIN 인덱스를 걸어봤는데 특정 키 검색에는 효과가 없는 것 같아요.

어떤 인덱스 전략을 써야 하나요?

댓글 5

김김영삼7개월 전
JSONB 특정 키 검색에는 Expression Index가 효과적입니다:

CREATE INDEX idx_data_name ON your_table ((data->>'name'));


이러면 WHERE data->>'name' = 'test' 쿼리가 이 인덱스를 탑니다.
DDB전문가(guest)7개월 전
GIN 인덱스는 @> 연산자로 검색할 때 효과적입니다. WHERE data @> '{"name": "test"}'::jsonb 이런 식으로요.
백백엔드주니어(guest)7개월 전
두 분 다 감사합니다! Expression Index 적용하니까 쿼리가 200ms에서 2ms로 줄었어요.
김김DBA(guest)7개월 전
EXPLAIN ANALYZE로 실행 계획 확인해보셨나요? 인덱스가 실제로 사용되는지 확인하는 게 중요합니다.
DDB전문가(guest)7개월 전
참고로 PostgreSQL 17부터 JSON_TABLE() 함수가 추가되어 JSON 데이터를 관계형으로 쿼리할 수 있습니다. 복잡한 JSON 검색이 필요하면 이것도 고려해보세요.
Ctrl+Enter로 등록