GIN / GIST

김영준·2026년 4월 13일

멜로미

목록 보기
8/13

검색 인덱스 전략 정리

현재: GIN 선택 이유

  • 데이터 규모가 작음 (게시글 수백~수천 건 수준)
  • 후보가 적으니 similarity() 전체 계산해도 빠름
  • 인덱스 크기가 작고 쓰기 부담 없음
  • 구현이 단순 — % 연산자 + ILIKE로 필터링하고 similarity()로 점수 매기면 끝

언제 GiST로 전환하나

검색 응답이 체감될 정도로 느려질 때. 구체적으로는:

  • 게시글이 수만 건 이상으로 늘어나고
  • 흔한 키워드("상담", "치료")로 검색 시 후보가 수천 건 이상 잡히면서
  • similarity() 계산이 병목이 되어 응답이 수백 ms를 넘길 때

왜 GiST로 바꾸나

GIN은 후보 전체에 similarity()를 돌려야 하지만, GiST는 KNN(<-> 연산자)으로 상위 N개만
인덱스에서 바로 꺼냄. 후보가 많아질수록 차이가 커짐.

전환 비용

  • 인덱스만 교체 + 쿼리에서 <-> 연산자로 변경
  • 코드 변경 최소한 — 엔티티, DTO, 서비스 로직은 그대로
profile
개발의 신이 될거다

0개의 댓글