[Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC)
[Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC)
이 힌트는 이전 강좌의 INDEX, INDEX_ASC 힌트와 정반대 기능을 합니다. 즉 데이터를 인덱스를 이용하여 스캔 하지만 역순으로 스캔 하라는 의미이죠…
프로그래밍을 하다 보면 데이터를 역순으로 가지고 올 경우가 가끔 있는데 그 경우 이 힌트를 이용하시면 효율적으로 프로그래밍이 가능하리라 생각 합니다. 즉 어느 정도 양이 되는 테이블의 경우 order by를 사용하지 마시고 index_desc 힌트를 이용하시는 것이 좋을 것이라는 이야기 입니다.
EMP 테이블에서 사원명, 급여를 출력하는데 사원명의 역순으로 출력하라고 했을 때…
(EMP 테이블의 경우 데이터 건수가 얼마 되지 않지만 많은 건의 데이터를 가진 테이블을 비교 한다면 성능에서 차이가 있을 겁니다)
1. ORDER BY 이용
select ename, sal
from emp
order by ename desc
-----------------------------------------------------------------
Operation Object Name Rows Bytes Cost
-----------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=ALL_ROWS 15 4
SORT ORDER BY 15 135 4
TABLE ACCESS FULL SCOTT.EMP 15 135 3
2. INDEX_DESC 이용
select /*+ index_desc(emp idx_emp_ename) */
ename, sal
from emp
where ename > ' '
-----------------------------------------------------------------
Operation Object Name Rows Bytes Cost
------------------------------------------------------------------
SELECT STATEMENT Optimizer Mode=ALL_ROWS 15 2
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 15 135 2
INDEX RANGE SCAN DESCENDING SCOTT.IDX_EMP_ENAME 15
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - [Hint]ACCESS 경로를 변경하는 힌트(NO_EXPAND) (0) | 2012.07.19 |
---|---|
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_FFS) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX) (0) | 2012.07.19 |