본문 바로가기

프로그래밍/oracle

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

반응형

[Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC)
 
 
[Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC)

앞선 강좌의 INDEX 힌트와 동일한데 보이는 그대로 인덱스를 스캔 하는데 오름차순(ASCENDING) 스캔 하라는 의미의 힌트 입니다. 이힌트를 이용하여 데이터를 추출하데 되면 화면에 나타나는 데이터는 인덱스 키를 기준으로 오름차순 정렬된 모습으로 나타나겠죠^^

만약 EMP 테이블에서 사원들의 이름과 급여를 출력하는데 이름순으로 정렬을 하라고 했을 때…

다음과 같이 하면 되지만 이 경우엔 SORT를 위한 TEMP 영역을 사용하게 되므로 많은 양의 데이터를 추출하는 경우엔 상당한 OVERHEAD가 따르게 됩니다. 되도록 이런 식으로는 사용하지 않는 것이 좋을 것 같습니다. (예제에서는 데이터가 몇 건 되지 않는 EMP 테이블의 결과이지만 대용량의 테이블 이라면 속도 차이가 상당할 것입니다.)

select ename, sal
from   emp
order  by ename asc

---------------------------------------------------------------------
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                                                     

이번엔 힌트를 이용해 보도록 합니다.

select /*+ index(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        SCOTT.IDX_EMP_ENAME        15                   1                                                     

이번에는 INDEX_ASC를 사용해 보도록 하죠… INDEX 힌트와 동일한 결과를 보일겁니다.

select /*+ index_asc(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        SCOTT.IDX_EMP_ENAME        15                   1
 
 
 
 

반응형