1.2. 부분범위처리의 적용원칙
1.2.1. 부분범위 처리의 자격
1) SELECT SUM(ordqty) 2) SELECT ord_dept, COUNT(*) 3) SELECT ord_date, ordqty * 1000
FROM order FROM order FROM order
WHERE ord_date like '200512%' WHERE ord_date like '200512%'; WHERE ord_date like '200512%'
GROUP BY ord_dept; ORDER BY ord_date;
=> SELECT - List 에 SUM, COUNT , ORDER BY 가 사용되어서 부분범위 처리가 불가능하게된다.
- 전체 범위 액세스
SELECT deptno, empno
FROM emp1
WHERE sal > 10000
UNION ALL
SELECT deptno, empno
FROM emp2
WHERE hiredate between '01-JAN-05' and sysdate;
1.2.2. 옵티마이져 모드에 따른 부분범위처리
- 규칙기준, 비용기준(FIRST_ROWS) => 부분범위처리
- 비용기준(ALL_ROWS) => 전체범위처리
예)
SELECT ord_dept, ordqty
FROM order
WHERE ord_dept > '10000';
=> 논리적으로 볼때 보분범위 처리가 가능하다, 그러나 이 SQL을수행하는 옵티마이져 목표가 'ALL_ROWS'라면 실행계획 수립에서 차이가 날수있다.
=> 'ALL_ROWS'로 했을 때 이러한 실행계획이 나타나는 것은 이 방식의 최적화는 전체범위를 모두 처리했을 때의 최적화
'FIRST_ROWS' 는 부분범위 최적화를 추구한다.
- 시스템이 온라인 위주로 처리된다면 옵티마이져의 목표를 'FIRST_ROWS'로 지정하는것이좋다.
문서에 대하여
- 이 문서는 오라클클럽 대용량 데이터베이스 스터디 모임에서 작성하였습니다.
- {*}이 문서의 내용은 이화식님의 새로쓴 대용량 데이터베이스 솔루션을 참고했습니다.*
- 이 문서를 다른 블로그나 홈페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^\^