B-Tree 인덱스(idx_complexes_name)가 이미 걸려 있었지만, LIKE '%힐스테이트%' 패턴에선 인덱스를 타지 않아 43,360건 전체를 Seq Scan하고 있었다 (13.183ms).
- 인덱스가 있는데도 Seq Scan이 나는 원인 진단
- 부분 문자열 검색(
%x%패턴)을 인덱스로 가속
- 기존 B-Tree 인덱스 — 접두어(
x%)만 지원,%x%패턴엔 무용지물임을 EXPLAIN으로 확인 → 한계 확인 - Trigram(GIN) 인덱스 — 문자열을 trigram으로 분해해 역인덱스 구성,
%x%도 교집합 매칭으로 지원. 1~2글자는 UI 입력 제한으로 대응 → 선택
💡 배운 점: DB 레벨 개선폭과 HTTP 전체 구간 개선폭은 다르다. 커넥션 풀 대기·네트워크가 그대로 남아있기 때문에 쿼리 하나가 빨라졌다고 전체 응답시간이 비례해서 빨라지지 않는다.