2013년 11월 6일 수요일

[ORACLE힌트간단사례]오라클힌트데이터정렬, order by 사용


[ORACLE힌트간단사례]오라클힌트데이터정렬, order by 사용예

myemp1 테입블에는 2천만건 정도의 데이터가 있고 테이블 구조는 다음과 같다.

SQL> desc myemp1
 이름                                      널?      유형
 ----------------------------------------- -------- --------------

 EMPNO                                    NOT NULL NUMBER
 ENAME                                              VARCHAR2(100)
 DEPTNO                                            NUMBER
 ADDR                                              VARCHAR2(100)
 SAL                                                NUMBER


인덱스는 sal 컬럼에 만들어져 있다.
인덱스명 : idx_myemp1_sal


1. sal값만 추출하는 경우인데 sal로 내림차순 정렬(급여가 높은곳에서 낮은순서로)

-- 18초
select sal from myemp1
order by sal desc

인덱스를 이용하지 못하고 FULL SCAN

-- 0.02초
select sal from myemp1 where sal > 0
order by sal desc

idx_myemp1_sal 이용

이번에는 힌트를 사용해 보자. where sal > 0 이 꼭 필요하다.
없으면 힌트먹지 않음

-- 0초
select /*+ index_desc(myemp1 idx_myemp1_sal) */ sal from myemp1
where sal > 0


2. ename, sal 값을 추출하는 경우(ename은 인덱스 영역에는 없는 값이다)

-- 34초
select ename, sal from myemp1
order by sal desc

인덱스를 이용하지 못하고 FULL SCAN

--34초
select ename, sal from myemp1 where sal > 0
order by sal desc

인덱스를 이용하지 못하고 FULL SCAN


이번에는 힌트를 사용해 보자. where sal > 0 이 꼭 필요하다.
없으면 힌트먹지 않음

-- 0초
select /*+ index_desc(myemp1 idx_myemp1_sal) */ ename, sal from myemp1
where sal > 0 

댓글 없음:

댓글 쓰기