Database/MySQL

where 절 서브쿼리 실행 방식

최-코드 2025. 2. 12. 20:45

Where 절에서 사용되는 서브쿼리는 유형에 따라 실행 방식이 바뀐다.

  1. 상관 서브쿼리
  2. 비상관 서브쿼리

상관 서브쿼리

  • 메인 쿼리의 한 행마다 서브쿼리가 한 번씩 실행된다.
  • 즉, 스칼라 서브쿼리처럼 동작한다.
  • 서브쿼리가 메인 쿼리의 값을 참조할 때를 말한다.
  • 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
);