행위

"실행계획 조인 읽는 순서"의 두 판 사이의 차이

DB CAFE

(소트머지 조인과 해시 조인 =)
(실행계획에서 조인 진행 순서 =)
15번째 줄: 15번째 줄:
 
# 해시조인은 Hash Area에 Build Input을 모두 채울 수 있느냐가 관건
 
# 해시조인은 Hash Area에 Build Input을 모두 채울 수 있느냐가 관건
  
== 실행계획에서 조인 진행 순서 ===
+
== 실행계획에서 조인 읽는 순서 ==
 
[[파일:조인순서.jpg]]
 
[[파일:조인순서.jpg]]
 
[[Category:oracle]]
 
[[Category:oracle]]

2023년 2월 9일 (목) 23:32 판

thumb_up 추천메뉴 바로가기


1 NL조인[편집]

  1. NL조인은 Random 액세스 발생량에 의해 성능이 결정됨
  2. WHERE 조건이 없는 경우에는 드라이빙테이블(OUTER)은 작은 쪽 집합을 드라이빙하는 것이 유리합니다.
  3. WHERE 조건이 있는 경우에는 WHERE 조건절 컬럼의 인덱스 존재 및 구성여부에 따라 성능이 결정되며, 작은 쪽 집합을 드라이빙하는 것이 유리합니다.
  4. INNER쪽 테이블의 조인 컬럼에 인덱스 존재 여부가 성능에 결정적인 요소임.
    1. NL조인에서는 Random 액세스 발생량 외에도 Inner 쪽 인덱스 구성 및 조건절 연산자 형태에 따라 성능이 크게 좌우되는데, 인덱스 스캔 효율에 차이가 생기기 때문.

2 소트머지 조인[편집]

  1. 소트머지 조인과 해시조인에서도 순서가 중요
  2. 소트머지 조인은 PGA상에서 정렬된 집합(Sort Area)을 통해 조인 액세스가 일어나기 때문에 Random 액세스 발생량 보다 소트 부하에 의해 성능 결정됨.
    1. 즉, 디스크 소트가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙하는 것이 빠르지만 메모리 소트방식으로 조인할 때는 적은 쪽 테이블을 드라이빙하는 것이 조금 더 빠름

3 해시 조인[편집]

  1. Build Input을 작은 쪽 테이블로 드라이빙하는것이 유리 (SWAP_JOIN_INPUTS 힌트로 조절)
  2. 해시조인은 Hash Area에 Build Input을 모두 채울 수 있느냐가 관건

4 실행계획에서 조인 읽는 순서[편집]

조인순서.jpg