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