1
외부 쿼리가 현재 행을 하나 집는다
현재 행 예시
category = '전자'
price = 300000
외부 쿼리는 한 번에 한 행씩 읽고, 그 행의 값이 다음 계산의 기준이 됩니다.
외부 쿼리의 p.category가 내부 조건으로 들어가고, 계산된 MAX(price)를 현재 행의 price와 비교해 결과 포함 여부를 정합니다.
category = '전자'
price = 300000
외부 쿼리는 한 번에 한 행씩 읽고, 그 행의 값이 다음 계산의 기준이 됩니다.
SELECT MAX(price)
FROM products p2
WHERE p2.category = p.category
현재 행의 category가 달라지면 내부 조건도 함께 바뀌고, 같은 카테고리여도 다음 행이면 다시 평가될 수 있습니다.
500000 = 500000
포함
300000 ≠ 500000
제외
비교가 끝나면 다음 외부 행으로 넘어가 같은 흐름이 다시 반복됩니다.
행이 많을수록 같은 계산이 반복될 가능성이 커집니다. 그래서 상관 서브쿼리는 대량 데이터에서 느려지기 쉽고, 다음 단계에서 JOIN이나 윈도우 함수로 바꾸는 이유가 됩니다.