2013년 9월 28일 토요일

조인의 최적화 방안

전체범위처리로 sql 수행시 반복연결보다 조인방식이 효율적

조인처리 : tab1 처리범위가 1000 건이면 1000번 연결작업을 랜덤엑세스 방식으로 수행
1000 번 연결작업에 sql 은 최대 1회 수행

반복연결 : tab1 처리 범위 1000건을 전체범위로 엑세스하여 가공한후 loop 를 돌면서 fetch
fetch 마다 sql 수행되어 전체 sql 1001 회 수행

연결되는 작업의 수행횟수가 처리되어야 할 일 량의 일부분씩 처리되는 경우 반복연결 유리
select a.fld1... , b.col2... from tab2 b , tab1 a where a.key1 = b.key2 and a.fld1 = '10'
order by a.fld2

조인처리:
1. 연결고리 정상
2. tab1 에 fld1 인덱스 존재
3. tab1의 fld='10' 전체범위
4. fld1='10' 범위 1000 로우
5. 1000의연결수행 후 정렬작업

반복처리 :
1. tab1 은 1000건 모두 엑세스 정렬
2. tab2 연결은 운반단위 만큼 수행
3. tab2 연결횟수 감소
4. 온라인조회 경우 반복연결 유리

전체범위 처리 방식에서 - 인라인뷰 처리

select x.부서코드 , y.부서명, 매출액 from
( select 부서코드 , sum(매출액) 매출액 from tab1 where 매출일 like '20000205%' group by 부서코드 ) x ,tab2 y where y.부서코드 = x.부서코드

연결고리 상태가 조인에 미치는 영향
조인의 양을 먼저 많이 줄여 줄수 있는 테이블을 먼저 엑세스하면 처리할 양이 감소
-연결고리 정상이면 어느 방향으로 연결을 수행하든 연결작업의 논리적인 양은 동일
-연결고리 정상이면 연결시도 전에 처리범위를 감소시키는 경로가 유리






댓글 없음:

댓글 쓰기