Database/MySQL
where 절 서브쿼리 실행 방식
최-코드
2025. 2. 12. 20:45
Where 절에서 사용되는 서브쿼리는 유형에 따라 실행 방식이 바뀐다.
- 상관 서브쿼리
- 비상관 서브쿼리
상관 서브쿼리
- 메인 쿼리의 한 행마다 서브쿼리가 한 번씩 실행된다.
- 즉, 스칼라 서브쿼리처럼 동작한다.
- 서브쿼리가 메인 쿼리의 값을 참조할 때를 말한다.
- join을 이용하여 성능을 개선할 수 있다.
SELECT *
FROM employees e
WHERE salary > (
SELECT AVG(salary)
FROM employees
WHERE department_id = e.department_id // 메인 쿼리의 값 참조 -> 상관 서브쿼리
);
비상관 서브쿼리
- 상관 서브쿼리와 달리 딱 한 번만 실행된다.
- 즉, 메인 쿼리와 상관 없으므로 서브쿼리에서 한 번 실행되고 이 값이 메인 쿼리에서 계속 사용된다.
SELECT *
FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees
);