SQL - 상관 서브쿼리란?
SQL - 상관 서브쿼리란?
상관 서브쿼리란?
- 메인쿼리에서 처리 중인 행의 특정 값을 알아야만 계산을 수행할 수 있을 때 사용함.
- 메인쿼리와 서브쿼리가 의존성을 가지고 동작하는 것임.
비상관 서브쿼리는 서브쿼리가 한 번 실행된 후 그 결과값을 메인쿼리가 사용하는 것을 말함.
예시
1
2
3
4
5
6
7
SELECT *
FROM articles AS a1
WHERE views >= (
SELECT AVG(a2.views)
FROM articles AS a2
WHERE a2.category = a1.category
);
상관 서브쿼리의 동작 방식
- 메인 쿼리가 먼저 한 행(row)을 읽음.
- 읽혀진 행의 값을 서브쿼리에 전달한 후 서브쿼리가 실행됨
- 서브쿼리 결과를 통해 메인쿼리의
WHERE조건을 판단함
이때, 상관 서브쿼리는 서브쿼리가 메인쿼리의 행 수만큼 반복 실행될 수 있음.
상관 서브쿼리의 성능
- 메인쿼리의 행 수가 많을 경우 성능이 매우 떨어질 수 있음
- 보통 상관 서브쿼리는
JOIN으로 처리가 가능함. - DB 옵티마이저가
JOIN을 더 효율적으로 처리해줌
- 보통 상관 서브쿼리는
This post is licensed under CC BY 4.0 by the author.