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;
예)
SELECT ord_dept, ordqty
FROM order
WHERE ord_dept > '10000';
=> 논리적으로 볼때 보분범위 처리가 가능하다, 그러나 이 SQL을수행하는 옵티마이져 목표가 'ALL_ROWS'라면 실행계획 수립에서 차이가 날수있다.
=> 'ALL_ROWS'로 했을 때 이러한 실행계획이 나타나는 것은 이 방식의 최적화는 전체범위를 모두 처리했을 때의 최적화
'FIRST_ROWS' 는 부분범위 최적화를 추구한다.
- 시스템이 온라인 위주로 처리된다면 옵티마이져의 목표를 'FIRST_ROWS'로 지정하는것이좋다.
- 강좌 URL : http://www.gurubee.net/lecture/2582
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.