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'로 지정하는것이좋다.



문서에 대하여

  • 이 문서는 오라클클럽 대용량 데이터베이스 스터디 모임에서 작성하였습니다.
  • {*}이 문서의 내용은 이화식님의 새로쓴 대용량 데이터베이스 솔루션을 참고했습니다.*
  • 이 문서를 다른 블로그나 홈페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^\^