ORACLE/튜닝
merging과 unnesting에 대해서 ...
argoLee
2019. 6. 18. 16:33
NO_MERGE vs NO_UNNEST
NO_MERGE: 뷰나 인라인 뷰에 사용 (인라인 뷰 = FROM절의 서브쿼리) NO_UNNEST: 인라인 뷰 외의 WHERE절 등의 서브쿼리에 사용 |
NO_MERGE와 NO_UNNEST의 공통점은
서브쿼리 ( 또는 뷰나 인라인 뷰 )를 해체하지 말아라. 라는 의미를 갖고 있습니다.
그럼 그 반대도 있겠죠?
MERGE: 뷰나 인라인 뷰를 해체해라 UNNEST: 서브쿼리를 해체해라 (해쉬 테이블로 올릴 테이블을 직접 정하고자 할 때 사용) |
먼저 서브쿼리 UNNESTING 문부터 알아보죠!
[짝꿍처럼 써줘야하는 힌트]
NO_UNNEST: 서브쿼리를 해체하지 마라 1. PUSH_SUBQ: 서브쿼리부터 수행해라 2. NO_PUSH_SUBQ: 메인쿼리부터 수행해라
UNNEST: 서브쿼리를 해체해라 1. SWAP_JOIN_INPUT: 해쉬테이블로 올릴 테이블 지정 2. NO_SWAP_JOIN_INPUT: 해쉬테이블로 올리지 않을 테이블 지정 |
다음으로 서브쿼리 MERGING 문을 알아보죠!
MERGE: 뷰나 인라인 뷰를 해체해라 NO_MERGE: 뷰나 인라인 뷰를 해체하지 마라 |