본문 바로가기

프로그래밍/oracle

oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC)

반응형

[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           
 
 
 

반응형