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: 뷰나 인라인 뷰를 해체하지 마라 |
'ORACLE > 튜닝' 카테고리의 다른 글
SQL Trace file의 내용을 SQL 문장으로 분석 (0) | 2019.11.12 |
---|---|
오라클 업그레이드 SQL 튜닝 대상 추출 (0) | 2019.11.12 |
서브쿼리 동작 방식을 제어하는 힌트들 (0) | 2019.06.13 |
ASH(Active Session History) (0) | 2019.05.15 |
Lock 튜닝 방법 (0) | 2019.05.15 |