목록 보기
PostgreSQL GIN 인덱스를 통한 LIKE 검색 성능 개선
백엔드

PostgreSQL GIN 인덱스를 통한 LIKE 검색 성능 개선

뷰노
뷰노
2020년 9월 8일

두줄요약

PostgreSQL의 pg_trgm 기반 GIN 인덱스로 환자 정보 부분 일치 검색을 개선했습니다. 100만 건 환경에서 `%LIKE%` 검색은 약 9~10배 빨라졌습니다.

문제 상황

  • 환자명·환자고유번호의 부분 일치 검색을 위한 %LIKE% 조건
  • 인덱스 미적용 시 전체 레코드 탐색에 따른 검색 지연

구조와 흐름

  • B-tree 인덱스의 원본 값 기반 단일 값 탐색
  • GIN 인덱스의 분할 요소 기반 포함 여부 탐색
  • pg_trgm의 문자열 3글자 단위 trigram 인덱싱

성능/운영 포인트

  • 100만 건 환자 정보 레코드에서 무인덱스·B-tree·GIN 성능 비교
  • EXPLAIN ANALYSE로 = 및 %LIKE% 쿼리 실행 계획 확인
  • %LIKE% 검색에서 GIN 적용 후 무인덱스 대비 약 9~10배 개선

주의할 점

  • = 연산에는 B-tree가 효과적이며 GIN은 전체 탐색과 동일하게 동작
  • pg_trgm은 3글자 단위 분할 방식으로 3글자 이상 검색에서 효율 기대

다음 읽기

같은 회사의 연관 글

Spatial index를 이용한 웹 어플리케이션 최적화

병리 슬라이드 뷰어의 대량 Gland Canvas 렌더링 지연을 분석했습니다. Spatial index와 화면별 필터링·그룹화로 렌더링 대상을 줄였습니다.

뷰노
뷰노
프론트엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...