쿼리가 인덱스를 타지 않는 경우
- 인덱스 컬럼절을 변형한 경우
- 수식이나 함수 등으로 인덱스 컬럼 절을 변형 했을 경우
- 쿼리의 데이터 형 변환이 일어난 경우
- 대입되는 항목끼리 데이터 타입이 다르면 내부적인 형 변환이 일어날때
ex)
column_name = '20130909';
TO_DATE('20130909', 'YYYYMMDD'); // DATE 타입이 달라져 인덱스를 차지 않는다.
- NULL 또는 NOT NULL을 사용하는 경우
기본적으로 인덱스를 구성한 컬럼 값이 전부 NULL이라면 인덱스는 null값을 저장하지 않음.
EX)
- 인덱스는 결국 타겟을 찾는 작업인데 null 일경우 목적이 없기 때문에 사용이 불가능
- 반대로 not null 일경우는 not null 이외의 것을 찾으란 이야기지만 말에 모순이 생김
- LIKE 연산자를 사용하는 경우
- %A, %A% 는 인덱스를 타지않는다.
- %가 앞쪽에 사용되면 정렬 순서를 사용할 수 없으므로 테이블 풀스캔이 이루어진다.
- A%는 인덱스를 탄다.
- 부정형으로 조건을 사용한 경우