h4.(DBMS나 개발 Tool에 따라 이러한 기능을 제공하지 못하는 것들도 있다)
부분 범위 예시
사용 Tool : SQLPLUS
옵션 : arraysize, pause
SQL> show arraysize
arraysize 15
SQL> show pause
PAUSE는 OFF
SQL> set arraysize 5
SQL> set pause on
SQL> show arraysize
arraysize 5
SQL> show pause
PAUSE는 "로 ON 되고 지정되었습니다"
SQL> select * from scott.emp;
enter 입력
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
enter 입력
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30
.
.
.
^^
전체범위처리 ( 주어진 조건의 범위가 좁은 경우는 문제가 없으나 넓은 경우는 빠른 수행속도를 기대하기 어려움)
1. 드라이빙 조건을 만족하는 범위를 모두 스캔
2. 체크조건 검증한 후 성공한 건에 대해 임시 저장공간에 저장
3. 저장이 완료되면 필요한 2차 가공을 한 후 운반단위만큼 추출시키고 다음 요구가 있을 때까지 일단 멈춤
부분범위처리 ( 처리할 범위가 아무리 넓다고 하더라도 그 범위 중의 일부만 처리)
1. 드라이빙 조건을 만족하는 범위를 차례로 스캔함
2. 체크조건을 검증하여 성공한 건을 바로 운반단위로 보냄
3. 운반단위가 채원지면 수행을 멈추고 결과를 추출
공통점 : 항상 운반단위만 채워지면 일단은 멈춘다.
-운반단위만큼만 추출되었다고 그것이 부분범위 처리를 한 것이라고 단정지어서는 안된다.
SORT 실행계획, VIEW 실행계획, Sort Merge 조인, HASH JOIN( 인-메모리 해쉬조인 아닐때)
HASH JOIN(인-메모리 해쉬조인)
SQL_TRACE에서 Execute나 Fetch라인에 있는 'Query'나 'Disk', 'Current'를 확인하여 전체 테이블의 블록 수보다 훨씬 적을때