[SQL] 옵티마이저 조인

김아름·2022년 8월 18일
0

SQLD

목록 보기
11/11
post-thumbnail
post-custom-banner

옵티마이저 조인 (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








  1. O
  2. O
  3. X ( 큰테이블X, 작은테이블O )
  4. X ( 아무리 많아도 2개씩 작업 됨 )
  5. X ( Sort Merge Join X,Hash Join O
    --> 대량배치 작업은 CPU를 제일 많이 사용가능한 Hash Join이 유리,
    --> Sort Merge Join은 정렬 작업 함 )
  6. O
  7. O ( Nested Loop Join은 인덱스가 필수 Hash Join은 인덱스 필수가 아니라서 있던 없던 상관없음 )
  8. X ( 조인은 테이블과 테이블 사이, 앞에서 이미 수행 된 조인 결과 집합과 테이블, 조인 결과와 조인 결과 사이에서 발생 )
  9. O
  10. X ( Sort Merge Join X, Hash Join O
    --> Sort Merge Join은 Equi join, non-Equi join 모두 가능함 )
  11. O
  12. X ( 작은 테이블이 유리 )
  13. X



참고

profile
쿄쿄쿄
post-custom-banner

0개의 댓글