함수 적용, 날짜 추출, 수식 계산, JSON 값 추출처럼 조건식이 원본 값을 바꾸면 그 표현식 자체를 인덱싱해야 탐색 경로가 생깁니다.
UPPER(name) = 'KIM'
INDEX ON UPPER(name)
대소문자를 바꾼 결과 기준으로 바로 찾습니다.
YEAR(created_at) = 2024
INDEX ON YEAR(created_at)
전체 날짜가 아니라 추출된 연도 값으로 범위를 좁힙니다.
price * 1.1 > 10000
INDEX ON (price * 1.1)
조회 때마다 계산하지 않고 계산 결과를 기준으로 탐색합니다.
JSON_VALUE(data, '$.age') > 20
INDEX ON JSON_VALUE(data, '$.age')
JSON 내부 필드를 꺼낸 값에도 별도 탐색 경로를 만듭니다.
INDEX ON LOWER(email) 이 있으면
WHERE LOWER(email) = 'user@test.com' 에는 도움 되지만,
다른 함수나 원본 컬럼 비교에는 그대로 쓰이지 않습니다.