WHERE 컬럼마다 인덱싱하는 것은 PostgreSQL 최적화가 아니다

발행: (2026년 5월 12일 AM 12:20 GMT+9)
2 분 소요
원문: Dev.to

Source: Dev.to

Cover image for Indexing every WHERE column is not PostgreSQL optimization

내가 자주 보는 PostgreSQL 인덱싱 실수 하나:

“쿼리가 A, B, C 로 필터링되니 A, B, C 에 인덱스를 만들자.”
이렇게 하면 동작할 수도 있지만, 잘못된 인덱스일 수도 있다.

복합 B‑tree 인덱스 고려 사항

  • 조건 유형(동등 vs. 범위)
  • 컬럼 순서
  • 선택도(selectivity)
  • 테이블 크기
  • 실제 실행 계획

조건 순서

동등 조건은 보통 범위 조건보다 앞에 두어야 한다. 범위 조건을 먼저 두면 플래너가 이후 컬럼을 효율적으로 사용하지 못할 수 있다.

통계(n_distinct)

컬럼 통계에서 얻은 n_distinct 값은 선택도 추정에 영향을 미친다. 이론적으로는 좋은 인덱스라도 플래너 통계가 다르게 판단하면 무용지물이 될 수 있다.

좋은 인덱스가 무시될 때

이론적으로 최적이라고 생각되는 인덱스라도, 플래너가 해당 쿼리 계획에 유리하다고 판단하지 않으면 무시될 수 있다.

pgAssistant 로 자동 추천

pgAssistant는 다음 과정을 자동화하여 인덱스 추천 워크플로우를 수행한다:

  1. 쿼리에 대해 EXPLAIN ANALYZE 실행.
  2. 플래너 통계 검사.
  3. 관찰된 실행 계획을 기반으로 가장 적절한 인덱스 제안.

전체 글

https://beh74.github.io/pgassistant-blog/post/query_advisor/

0 조회
Back to Blog

관련 글

더 보기 »