옵티마이저 조인 (Optimizer Join)
-
/*+ USE_NL(table1 table 2...) */
: 테이블의 Join 시 테이블의 각 Row가 Inner 테이블을 Nested Loop 형식으로 Join 한다. 지정된 table이 inner table이 된다. ( inner table <-> driving(outer) table ) 흔히 ORDERED Hint와 함께 쓴다.
-
/*+ USE_HASH (table_name) */
: 각 테이블 간 HASH JOIN이 일어나도록 유도한다
-
/*+ USE_MERGE (table_name) */
: 지정된 테이블들의 조인이 SORT-MERGE형식으로 일어나도록 유도한다.
출처: https://devuna.tistory.com/35 [튜나 개발일기:티스토리]
1. Nested Loop Join
2. Sort Merge Join
3. Hash Join
- O
- O
- X ( 큰테이블X, 작은테이블O )
- X ( 아무리 많아도 2개씩 작업 됨 )
- X ( Sort Merge Join X,Hash Join O
--> 대량배치 작업은 CPU를 제일 많이 사용가능한 Hash Join이 유리,
--> Sort Merge Join은 정렬 작업 함 )
- O
- O ( Nested Loop Join은 인덱스가 필수 Hash Join은 인덱스 필수가 아니라서 있던 없던 상관없음 )
- X ( 조인은 테이블과 테이블 사이, 앞에서 이미 수행 된 조인 결과 집합과 테이블, 조인 결과와 조인 결과 사이에서 발생 )
- O
- X ( Sort Merge Join X, Hash Join O
--> Sort Merge Join은 Equi join, non-Equi join 모두 가능함 )
- O
- X ( 작은 테이블이 유리 )
- X
참고