Index 가용성

rivermt·2023년 5월 17일
0

mysql

목록 보기
2/2

기본적으로 B-Tree 인덱스의 특성상 다음 조건에서는 작업 범위 결정 조건으로 사용할 수 없다.
경우에 따라서 체크 조건으로 인덱스를 사용할 수는 있다.

  • NOT EQUAL로 비교된 경우 ("<>", "NOT IN", "IS NOT NULL")

  • LIKE '%??'(앞 부분이 아닌 뒷 부분 일치) 형태로 문자열 패턴이 비교된 경우)
    -> 왼쪽부터 한 글자씩 비교해 가면서 일치하는 레코드를 찾기 때문

  • 스토어드 함수나 다른 연산자로 인덱스 칼럼이 변형된 후 비교된 경우

  • NOT DETERMINISTIC 속성의 스토어드 함수가 비교 조건에 사용된 경우

  • 데이터 타입이 서로 다른 비교(인덱스 칼럼의 타입을 변환해야 비교가 가능한 경우)

  • 문자열 데이터 타입의 콜레이션이 다른 경우


다중 칼럼으로 만들어진 인덱스의 경우는 다음과 같다.

다음과 같은 인덱스가 있다고 가정해보자

INDEX ix_test (col_1, col_2, ... col_n)
  • 작업 범위 결정 조건으로 인덱스를 사용하지 못하는 경우
    • col_1 칼럼의 비교 조건이 위의 인데스 사용 불가 조건 중 하나인 경우
    • col_1 칼럼에 대한 조건이 없는 경우

  • 작업 범위 결정 조건으로 인덱스를 사용하는 경우 (2 <= i < n)
    • col1 ~ col(i-1) 칼럼까지 동등 비교 형태 ('=' or 'IN')
    • col_i 칼럼에 대해 다음 연산자 중 하나로 비교
      동등 비교 ('=' or 'IN')
      크다 작다 형태 ('<' or '>')
      LIKE로 좌측 일치 패턴
profile
화이팅!!

0개의 댓글