※ full table scan을 할 수 밖에 없는 경우

  1. where절이 아예 없거나 인덱스가 없는 컬럼의 데이터를 검색할때
  2. 인덱스를 생성할때
  3. 검색조건이 ! =, ^ =, <>로 검색했을 때
  4. 테이블의 통계정보를 수집할 때

full table scan을 할 수 밖에 없다면 fast table scan을 빠르게 수행하면 됩니다. 대표적인 방법이 병렬 쿼리를 이용하는 방법입니다.

실습예제1. 아래의 sql이 병렬쿼리가 되도록 힌드틀 주시오!

튜닝전:


select ename, sal, job
from emp
where job != 'SALESMAN'

튜닝 후

select  /*+  full(emp)  parallel(emp, 4) */  ename, sal, job
               from  emp
               where job !='SALESMAN';

설명 : full 이라는 힌트를 full table scan을 하라는 힌트입니다.

parallel(테이블명, 병렬도)를 써서 병렬도의 갯수만큼 프로세서를 띄워서 full scan을 합니다.

Untitled

실습예제2. 병렬도를 몇개까지 줄 수 있는 지 확인하시오!

show parameter cpu_count

cpu_count integer 20