인덱스검색조건별 성능에 관한 질문
abletech 수험생

답변 채택시 : 0코아

답변 1 추천 0 조회 2982 2014.09.03

안녕하세요?

 

a라는 테이블에 컬럼 a,b로 결합 인덱스가 잡혀 있습니다.

b는 a,b,c,d,e,f,g,h,i,j까지의 문자중 반드시 하나가 들어가고 a는 유니크 하지 않은 값이며 분포는 1~100이라고 할때,

 

인덱스 검색조건을 줄때,

where a=1

이라고 주는것과

where a=1 and b in ('a','b','c','d','e','f','g','h','i','j')

라고 주는것중 어느것이 좋을까요?

 

저는 그동안 where a=1이라고만 주는것으로 사용해 왔습니다만

아래의 경우를 보아서, 과연 어떤것이 좋은것인지 궁금해서 질문을 드립니다.

 

 

댓글 (0)
목록 답변등록
인덱스검색조건별 성능에 관한 질문
stbo 2014.09.04

 해당 질문을 보아 둘의 성능 차이는 없는 것으로 보입니다. 어차피 b컬럼의 값을 모두 가져오기 때문입니다. 예를 들어보겠습니다. 아래 인덱스는 a+b의 결합인덱스 입니다. 여기에서 조건 a=1과 조건 a=1 and b in (‘a’,’b’,’c’)가 어떻게 인덱스에서 스캔되는지 도식화 해보았습니다. 보통 1+스캔을 하기 때문에(a 2값인 것을 알고 더 이상 진행하지 않으므로) 그것까지 그림에 반영했습니다. 보시는 바와 같이 b의 전체값을 가져오므로 스캔 범위는 동일한 것을 알 수 있습니다.

 idx_image.jpg

 

댓글 (0)