Search

선택 심화 04-02. 복합 인덱스는 동등 조건과 범위 조건의 순서를 생각하자

⚠️
선택 심화 · 현재 보류: 이 페이지의 실행계획은 원문에 제시된 예상·개념적 예시이며 이번 PostgreSQL 실측 결과가 아닙니다. SQL/인덱스 설정은 검증 후 적용해야 합니다.
상황: 04-02와 정확히 같은 회원·기간 조회를 x03과 x04로 비교한다.

BAD SQL — 개선·검토 대상

-- 비교 인덱스 x03 (ord_dtm, mbr_id) : 범위가 선두 SELECT o.ord_no, o.ord_dtm, o.mbr_id FROM tr_ord_big o WHERE o.mbr_id = 'M00019' AND o.ord_dtm >= TIMESTAMP '2023-03-01' AND o.ord_dtm < TIMESTAMP '2023-04-01';
SQL
복사

GOOD SQL — 권장 또는 비교할 SQL

-- 비교 인덱스 x04 (mbr_id, ord_dtm) : 동등 조건이 선두 SELECT o.ord_no, o.ord_dtm, o.mbr_id FROM tr_ord_big o WHERE o.mbr_id = 'M00019' AND o.ord_dtm >= TIMESTAMP '2023-03-01' AND o.ord_dtm < TIMESTAMP '2023-04-01';
SQL
복사

핵심

•
PG 실습의 x03과 x04 비교는 Index Cond에 같은 조건이 보여도 스캔한 인덱스 리프의 범위가 다를 수 있다는 핵심 사례다. 보통 동등 조건 키를 앞에 두고 범위 조건 키를 뒤에 두는 구성이 해당 검색에 유리하다.
💡
참고·예외
•
이 규칙은 B-tree 복합 인덱스의 기본적인 설계 방향이다. 조건 선택성, 다른 주요 SQL, PostgreSQL 버전별 최적화에 따라 예외가 있다. x03을 반드시 제거하거나 x04가 모든 SQL에서 더 좋다는 뜻은 아니다.