행위

조인별 튜닝 포인트

DB CAFE

thumb_up 추천메뉴 바로가기


1 조인시 성능 튜닝 요소[편집]

1.1 NL조인[편집]

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

1.1.2 NL조인 Batching[편집]


1.2 해시 조인[편집]

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

1.3 소트머지 조인[편집]

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

0467_001.jpg