[SQL] 인덱스를 살리는 WHERE 조건

Unit·2025년 5월 13일

SQL

목록 보기
13/59

인덱스를 걸었는데도 쿼리가 느리게 실행된 적 있으신가요?
그 원인 중 하나는, WHERE절에서 컬럼에 함수를 적용했기 때문일 수 있습니다.


✅ 예시

-- 인덱스를 무시하게 되는 방식
SELECT *
FROM orders
WHERE TO_CHAR(order_date, 'YYYY-MM') = '2025-04';

order_date에 인덱스가 있어도, 컬럼에 함수가 적용되면 인덱스를 타지 못하고 전체 테이블을 스캔하게 됩니다.


✅ 개선된 방식

-- 성능을 고려한 범위 조건
SELECT *
FROM orders
WHERE order_date >= '2025-04-01'
  AND order_date < '2025-05-01';

→ 이렇게 함수를 제거하고 범위로 조건을 작성하면, order_date 인덱스를 활용할 수 있어 성능이 개선됩니다.


정리

✔️ WHERE절에서 컬럼에 함수를 사용하면 인덱스가 무력화됩니다.
✔️ 조건문 구조를 바꾸는 것만으로도 쿼리 성능이 크게 개선될 수 있습니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글