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
);

'Database > MySQL' 카테고리의 다른 글

UNION & UNION ALL  (0) 2025.02.14
WITH 구문  (0) 2025.02.14
Where 절에서의 인덱스 사용  (0) 2024.09.08
MYSQL - DATE TYPE 연산  (0) 2024.06.09
MYSQL - 반올림, 버림  (1) 2024.06.07

+ Recent posts