을 위해 내가 (SWcode,cdcardno)
지수 절은 두 번째 열
에 인덱스를 만들 경우 2 값에 대한 검사를 생략하고 나는이 쿼리를 실행합니다
SELECT cd.*
FROM KS cd
where cd.cdcardno in ('6219862012953805')
ORDER BY cd.ROWID
와 오라클을 사용 인덱스 스킵 스캔을 그리고 그것은 사실입니다. 하지만이 쿼리를 실행할 때 :
SELECT cd.*
FROM KS cd
where cd.cdcardno in ('6219861009150391','6219862012953805')
ORDER BY cd.ROWID
oracle use Full scan. 나는 이유를 알 수 없다.
인덱스에 필드가 두 개 이상 있고 oracle이 첫 번째 필드 이상을 건너 뛰고 인덱스 트리 아래쪽 필드에서 인덱스를 "스캔"하도록 선택하면 건너 뛰기 스캔이 oracle로 선택 될 수 있습니다. 히스토그램 및 데이터 분포에 대해 말하는 것은 사실이지만 WHERE 절에서 하나의 필드 만 선택하면 건너 뛰기 검색을 기대하는 것은 의미가 없습니다. – sandman