선택 심화 · 현재 보류: 이 페이지의 실행계획은 원문에 제시된 예상·개념적 예시이며 이번 PostgreSQL 실측 결과가 아닙니다. SQL/인덱스 설정은 검증 후 적용해야 합니다.
상황: 회원 M00019의 2023년 3월 주문을 상태별로 집계한다.
BAD SQL — 개선·검토 대상
-- 인덱스 구성: tr_ord_big_x01 (ord_dtm)
SELECT o.ord_st, COUNT(*) AS cnt
FROM tr_ord_big o
WHERE o.ord_dtm >= TIMESTAMP '2023-03-01'
AND o.ord_dtm < TIMESTAMP '2023-04-01'
AND o.mbr_id = 'M00019'
GROUP BY o.ord_st;
SQL
복사
GOOD SQL — 권장 또는 비교할 SQL
-- 같은 SQL에서 복합 인덱스 x03을 비교
-- 기존 실습 정의: tr_ord_big_x03 (ord_dtm, mbr_id)
SELECT o.ord_st, COUNT(*) AS cnt
FROM tr_ord_big o
WHERE o.ord_dtm >= TIMESTAMP '2023-03-01'
AND o.ord_dtm < TIMESTAMP '2023-04-01'
AND o.mbr_id = 'M00019'
GROUP BY o.ord_st;
SQL
복사
핵심
•
여러 조건이 인덱스에 함께 존재하면 후행 조건을 인덱스 내부에서 확인할 수 있어 테이블 접근이 줄어드는 경우가 있다.
참고·예외
•
위 두 쿼리는 SQL 텍스트가 같으며 성능 차이는 인덱스 선택에서 온다. x03의 mbr_id가 Index Cond에 표시되어도 다음 04-03에서 설명할 '탐색 범위 축소'까지 보장되는 것은 아니다. 실측 수치는 본 문서에 옮기지 않았다.



