← 질문 목록
#44깊이 0
서브쿼리 언네스팅과 뷰 병합의 차이는?
서브쿼리 언네스팅은 WHERE절 등의 서브쿼리를 메인 쿼리와의 조인 형태로 변환하는 기법이고, 뷰 병합(View Merging)은 FROM절의 뷰 블록을 메인 쿼리와 하나로 병합하는 기법이라는 차이가 있다.
| 기준 | 서브쿼리 언네스팅 | 뷰 병합 (View Merging) |
|---|---|---|
| 변환 대상 | WHERE/HAVING절 서브쿼리 | FROM절 인라인 뷰 및 뷰 |
| 변환 방식 | 서브쿼리를 메인 조인문으로 변환 | 뷰의 쿼리 블록을 메인 쿼리에 병합 |
| 주요 목적 | 서브쿼리의 반복 수행 방지 | 불필요한 중간 집합 생성 방지 |
언네스팅은 WHERE·HAVING절을, 뷰 병합은 FROM절을 다룬다. 언네스팅은 서브쿼리를 조인 구조로 흡수해 해시 조인 등을 사용할 수 있게 돕는다.
반면 뷰 병합은 FROM절 인라인 뷰의 쿼리 블록을 메인 쿼리로 흡수한다. 뷰 블록이 합쳐지면 불필요한 임시 테이블과 중복 검색이 줄어든다.
두 기법 모두 옵티마이저가 쿼리 블록을 단순화하여 최적화 공간을 넓히는 기법이다. 하지만 작동하는 대상절과 조인 구조 생성 방식에서 명확히 구분된다.