인덱스가 쿼리를 못타는 경우

리리티·2022년 12월 27일
0

쿼리가 인덱스를 타지 않는 경우

  1. 인덱스 컬럼절을 변형한 경우
    • 수식이나 함수 등으로 인덱스 컬럼 절을 변형 했을 경우
  1. 쿼리의 데이터 형 변환이 일어난 경우
    • 대입되는 항목끼리 데이터 타입이 다르면 내부적인 형 변환이 일어날때

ex)

column_name = '20130909';
TO_DATE('20130909', 'YYYYMMDD'); // DATE 타입이 달라져 인덱스를 차지 않는다.

  1. NULL 또는 NOT NULL을 사용하는 경우

    기본적으로 인덱스를 구성한 컬럼 값이 전부 NULL이라면 인덱스는 null값을 저장하지 않음.

EX)

  • 인덱스는 결국 타겟을 찾는 작업인데 null 일경우 목적이 없기 때문에 사용이 불가능
  • 반대로 not null 일경우는 not null 이외의 것을 찾으란 이야기지만 말에 모순이 생김

  1. LIKE 연산자를 사용하는 경우
    • %A, %A% 는 인덱스를 타지않는다.
      • %가 앞쪽에 사용되면 정렬 순서를 사용할 수 없으므로 테이블 풀스캔이 이루어진다.
    • A%는 인덱스를 탄다.

  1. 부정형으로 조건을 사용한 경우
    • 부정문은 인덱스를 활용하지 못한다.
profile
remind

0개의 댓글