WHERE 성능
인덱스는 컬럼이 그대로 보일 때 잘 탄다
함수, 연산, 타입 불일치, 넓은 OR 조건은 일반 인덱스 효율을 떨어뜨릴
수 있다.
핵심 질문
조건 컬럼을 변형하지 않았는가
값 타입과 복합 인덱스 순서가 맞는가
피해야 할 형태
WHERE YEAR(order_date) = 2024 WHERE price * 1.1 > 50000 WHERE
phone = 01012345678
인덱스 친화 형태
WHERE order_date >= '2024-01-01' AND order_date <
'2025-01-01' WHERE price > 50000 / 1.1 WHERE phone =
'01012345678'
| 문제 | 원인 | 대안 |
|---|---|---|
| 컬럼 함수 | 인덱스 키와 비교식 모양이 달라짐 | 범위 조건으로 풀거나 표현식 인덱스 검토 |
| 암시적 변환 | 문자와 숫자 타입이 섞여 변환 발생 | 리터럴 타입과 컬럼 타입을 맞춤 |
| 다른 컬럼 OR | 하나의 인덱스 경로로 좁히기 어려움 | UNION 분리와 실행 계획 비교 |
조건 형태컬럼이 비교식에서 변형되지 않는가
선택도결과 행이 충분히 줄어드는가
복합 순서선행 컬럼부터 조건에 참여하는가
계획 확인실제 스캔 방식과 추정 행 수를 본다