🙇‍♀️인덱스 컬럼 순서

  • 복합 인덱스 칼럼 순서
  • Index(A, B, C)

🪐북마크 룩업만 조심하면 돼?

  • 북마크 룩업를 최소화하면 완벽한 최적화?
    • Leaf Page 탐색은 여전히 존재하기 때문에 완벽한 최적화는 아니다!

예시 [레벨, 종족] 인덱스를 걸었다고 가정하자.

  1. (56 휴먼)을 찾고 싶을 경우

Clustered면 리프페이지에 가서 (56 휴먼)을 찾을 것인데 (56 휴먼)도 엄청 많음

리프페이지에서 Scan을 해야 되니까 느림

  1. (56~60 휴먼)처럼 범위를 지정한다면 더더욱 느릴 것이다!

🪐실습

둘다 = 을 사용한다면 성능에 큰차이는 없다

범위를 사용한다면?

  1. 선행이 =, 후행이 BETWEEN일 때가 가자 좋다
  2. 선행이 BETWEEN이면 후행은 인덱스 기능을 상실한다
  3. 2번과 같은 경우라면 IN-LIST를 고려해보자

[!] Index(a, b, c)로 구성되었을 때, 선행에 between 사용 = 후행은 인덱스 기능 x 그럼 BETWEEN 같은 비교가 등장하면 인덱스 순서만 무조건 바꿔주면 될까? -> NO

BETWEEN 범위가 작을 때 -> IN-LIST로 대체하는 것을 고려 (사실상 여러번 = )

🪐결론

  1. 복합 컬럼 인덱스 (선행, 후행) 순서가 영향을 줄 수 있음
  2. BETWEEN, 부등호(> <) 선생에 들어가면, 후행은 인덱스 기능을 상실
  3. BETWEEN 범위가 적으면 IN-LIST로 대체하면 좋은 경우도 있다 (선행에 BETWEEN)
  4. 선행=, 후행BETWEEN이라면, 아무런 문제가 없기 때문 IN-LIST X

태그:

카테고리:

업데이트: