← 질문 목록
#336깊이 0
인덱스를 어느 칸부터 놓아야 하는가?
조건에서 등호로 걸리는 칸을 앞에, 범위로 걸리는 칸을 뒤에 놓는다. 순서를 바꾸면 뒤쪽을 못 쓴다.
- 1번 칸
=로 걸리는 것. 여기서 범위를 좁힌다 - 2번 칸그다음
=로 걸리는 것 - 3번 칸
><between처럼 범위로 걸리는 것 - 그 뒤정렬에만 쓰이는 것
범위 조건을 만나면 거기서 멈춘다. 그 뒤 칸으로는 찾아 들어갈 범위를 더 못 좁힌다. 읽어 온 것을 거르는 데는 쓰이고, DBMS에 따라 건너뛰며 훑어 살려 쓰기도 한다.
그래서 날짜 > ? 를 앞에 두고 상태 = ? 를 뒤에 두면 상태 조건이 놀게 된다. 순서만 바꿔도 읽는 양이 확 준다.
필요한 값이 인덱스 안에 다 있으면 원본을 안 본다. 조회하는 칸까지 인덱스에 얹어 두는 방법이 그래서 쓰인다.
인덱스를 늘릴수록 쓰기 비용과 선택 오류 가능성도 커진다. 쓰기마다 인덱스를 다 손봐야 하고, 옵티마이저가 고를 후보가 늘어 엉뚱한 것을 고르기도 한다.