- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=7241771&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
Transformation이란 무엇인가?
- Oracle은 Query에 대해 Optimization을 수행하기 전(즉, 실행게획을 생성하기 전)에 Transformation 과정을 수행한다.
- Transformation 과정은 실제 Optimization(Physical Optimization) 과정이 보다 잘 수행되도록 도와주는 Logical Optimization 이다.
- Transformation 을 이해해야만 실행계획을 이해할 수 있다.
- Transformation 의 기본적인 목표는 (CBO 관점에서) 복잡한 Query를 단순한 Query로 바꾸는 것이다.
Transformation 예제
복잡한 쿼리 - 3개의 쿼리블록 SELECT /*+ qb_name(Main_Query) */ * FROM (SELECT /*+ qb_name(Inline_View) */ * FROM t1 WHERE t1.c1 = 1) v1 , t2 WHERE v1.c1 = t2.c1 AND t2.c1 IN (SELECT /*+ qb_name(In_Subquery) */ c3 FROM t3) ; |
Transformation 쿼리 - 하나의 쿼리블록 SELECT * FROM t1, t2, t3 WHERE t2.c1 = (semi) t3.c1 AND t1.c1 = t2.c1 AND t1.c1 = 1 AND t2.c1 = 1 ; |
대표적인 Transformation 기법
- Subquery Unnesting
- Subquery Pushing
- View Merging
- Predicate Pushing
- cost Based Query Transformation
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=7241771&
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.