상품 테이블에 속성들을 attributes 라는 jsonb 컬럼에 몰아넣고 있는데, 특정 속성으로 필터링하는 쿼리가 데이터 늘면서 확 느려졌어요.
SELECT * FROM products
WHERE attributes @> '{"category":"laptop"}';
-- 40만건에서 1.8초, EXPLAIN 보면 Seq Scan일반 컬럼이면 인덱스 걸면 되는데 jsonb는 어떻게 인덱스를 걸어야 할지 모르겠어요. 그냥 attributes에 btree 인덱스를 걸어봤는데 전혀 안 먹더라고요. jsonb 검색은 인덱스가 원래 안 되는 건가요, 아니면 방법이 따로 있나요?
댓글 0