WHERE 절 조건의 순서가 성능에 영향을 줄까?

Posted by heoncode
2025. 4. 10. 09:10 SQL 기초 정리
728x90
반응형
SMALL

SQL 쿼리를 작성할 때 WHERE 절 안의 조건 순서를 신경 써야 할까요? 예를 들어 다음 두 쿼리는 조건 순서만 다를 뿐 동일한 결과를 반환합니다.

SELECT * FROM employees
WHERE salary > 5000 AND department_id = 10;

SELECT * FROM employees
WHERE department_id = 10 AND salary > 5000;

논리적으로는 동일하지만, 실행 성능은 달라질 수 있습니다. 그 이유는 바로 오라클 옵티마이저(Optimizer)가 실행 계획을 생성할 때 조건 순서를 고려하기 때문입니다.

옵티마이저는 어떻게 조건을 처리할까?

오라클 옵티마이저는 통계 정보, 인덱스 유무, 조건의 선택도 등을 종합적으로 판단해 실행 계획을 수립합니다. 이 과정에서 조건의 순서가 힌트를 줄 수는 있지만, 옵티마이저는 일반적으로 가장 효율적인 조건부터 우선 적용하려 합니다.

즉, 작성 순서보다는 조건의 필터링 효과(선택도)가 중요합니다. 예를 들어 department_id = 10 조건이 훨씬 더 많은 행을 걸러낼 수 있다면, 옵티마이저는 해당 조건을 먼저 적용하는 방향으로 실행 계획을 구성합니다.

실무에서는 어떤 기준으로 정리할까?

  • 조건 순서는 성능에 직접적인 영향을 주지 않을 수 있음
    → 옵티마이저가 최적 조건을 자동으로 판단

  • 다만 인덱스를 활용하려면 조건 순서가 중요할 수 있음
    → 복합 인덱스의 컬럼 순서에 맞춰 WHERE 조건을 작성하는 것이 유리

  • 실행계획(EXPLAIN PLAN)으로 실제 적용된 조건 순서를 확인
    → 예상과 다른 경우 힌트나 인덱스 조정 필요

조건 순서가 항상 성능을 좌우하는 것은 아니지만, 인덱스 구조와 선택도에 맞춰 조건을 구성하면 더 효율적인 쿼리를 만들 수 있습니다.


#SQL #WHERE절 #조건순서 #실행계획 #성능최적화 #쿼리튜닝 #인덱스활용

728x90
반응형
LIST