요약
- 범위로 조회하는 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는 디스크 접근을 최소화하기 위해 설계된 균형 트리 자료구조다