오라클 성능 고도화 원리와 해법 II (2016년)
조인 순서의 중요성 0 0 4,817

by 구루비 조인원리 조인순서 ORDERED USE_NL [2017.04.14]


04. 조인 순서의 중요성

h5.필터 조건이 없을 때

   
   select /*+ leading(b) use_nl(a) */ a.납입방법, b.*
     from 납입방법 A, 고객 B
    where B.납입방법코드 = A.납입방법코드;


select /*+ leading(a) use nl(b) */ a.납입방법, b.*
from 납입방법 a, 고객 b
where b.납입방법코드  = a.납입방법코드

다른 필터 조건이 없는 상황에서는 작은 쪽 집합을 드라이빙 하는 것이 유리함을 알 수 있다.

h5.필터 조건이 없을 때


select /*+ leading(b) use nl(a) */ a.납입방법명, b.*
from 납입방법 a, 고객 b,
where b.납입방법코드 = a.납입방법코드
and b.거주지역 = '부산'


select /*+ leading(a) use_nl(b) */ a.납입방법명,b.*
from 납입방법 a, 고객 b
where b.납입방법코드 = a.납입방법코드
and b.거주지역 = '부산'

h5.인덱스에 거주지역 컬럼 추가


select /*+ leading(a) use nl(b) */ a.납입방법명,b.*
from 납입방법 a, 고객 b
where b.납입방법코드 = a.납입방법코드
and b. 거주지역 = '부산'

조인 조건 외에 필터 조건이 있을 때는 인텍스 구성에 따라 유- 불리가 결정되며, 비효율이 없게끔 인텍스를 잘 구성해 주기만 한다면 역시 작은 쪽 집합을 드라이빙하는 것이 유리하다.

h5.소트 머지 조인과 해시 조인의 경우

소트 머지 조인

-PGA상에 정렬된 집합을 통해 조인 액세스가 일어나기 때문에 Random 액세스 발생량보다는 소트 부하에 의해 성능이 결정
-Disk Sort가 발생할 정도의 큰 테이블을 포함할 때는 큰 테이블을 드라이빙 하는 것이 빠름
-Memory Sort 발식으로 조인할 때는 작은 쪽 테이블을 드라이빙 하는 것이 조금 더 빠름

해시조인
-Hash Area에 Build Input(선행집합)을 모두 채울 수가 있느냐가 관건이므로 작은 쪽 테이블 드라이빙이 유리

"구루비 주주클럽 스터디모임" 에서 2016년에 "오라클 성능 고도화 원리와 해법 II " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3342

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입