Search

선택 심화 04-01. 한 컬럼 인덱스와 복합 인덱스의 차이를 알자

⚠️
선택 심화 · 현재 보류: 이 페이지의 실행계획은 원문에 제시된 예상·개념적 예시이며 이번 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에서 설명할 '탐색 범위 축소'까지 보장되는 것은 아니다. 실측 수치는 본 문서에 옮기지 않았다.