Join
2개 이상의 테이블을 연결
Subquery
외부 쿼리 내에 내부 쿼리가 있는 구조
Subquery를 Join으로 대체할 수 있는 경우
- 내부 쿼리가 단일 값을 반환하거나 1개의 열과 1개의 행을 반환하는 경우
- IN( ) 연산자 안에 서브쿼리가 있는 경우
- NOT IN( ) 연산자 안에 서브쿼리가 있는 경우
- EXISTS, NOT EXISTS 연산자 안에 서브쿼리가 있는 경우
Subquery를 Join으로 대체할 수 없는 경우
- GROUP BY를 사용한 서브쿼리가 FROM절에 있는 경우
- 집계된 값을 반환하는 서브쿼리가 WHERE절에 있는 경우
- ALL( ) 연산자 안에 서브쿼리가 있는 경우
Join과 Subquery 성능 비교
참고 링크