Zettelkasten

복합 인덱스 설계 원칙 - 동등 조건 컬럼은 왼쪽에, 범위(BETWEEN, <, > 등) 조건 컬럼으

·수정 2026.04.23·수정 3

요약

  • 범위로 조회하는 column은 인덱스의 후순위에 놓아야한다.

본문

인덱스 트리

  • (A, B, C) 순서대로 인덱스를 만들었다고 가정해보자
  • 인덱스는 트리형태로 만들어지는데 가장 바깥쪽에 A 기준, 그 다음 B 기준, C 기준으로 트리를 형성함
(A, B, C) 복합 인덱스 구조 예시
───────────────────────────────
           [A]
         /   |   \
       A=1  A=2  A=3
       │     │     │
       ▼     ▼     ▼
      [B]   [B]   [B]
     / | \  / | \  / | \
   B=1 B=2 B=3 ...       ...
    │          │
    ▼          ▼
   [C]        [C]
  / | \      / | \
C=1 C=2 C=3 ...
  • 인덱스 탐색시 A에 동등 조건이 걸려야 B로, B에 동등 조건이 걸려야 C로 내려갈 수 있음

복합 인덱스에서 범위 조건 동작

  • 만약 범위 column으로 사용되는 C를 앞으로 순위를 높여 (A, C, B) 형태로 인덱스를 생성
  • 쿼리 조건은 A= 10 and B = 20 and C>=10
  • A 조건에서는 단일 경로 탐색
  • C 조건에서 C > 10인 모든 노드를 다꺼냄
  • 그 다음 가져온 값 중에서 B= 20인 애들을 찾아서 반환함
  • 반대의 경우, 인덱스를 (A, B, C)로 둔 경우
  • A 조건, B 조건은 단일 조건으로 접근
  • B 조건을 부모로 C가 정렬되어 있는 상태로 있기 때문에, C는 그냥 10부터 마지막 까지 갖고 오면 됨

B+Tree는 디스크 접근을 최소화하기 위해 설계된 균형 트리 자료구조다