[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
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC) (0) | 2012.07.19 |
---|---|
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(HASH) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(FULL) (0) | 2012.07.19 |