[Hint]ACCESS 경로를 변경하는 힌트(INDEX)
[Hint]ACCESS 경로를 변경하는 힌트(INDEX)
이 힌트는 생긴 그대로 테이블에 있는 인덱스를 사용할 수 있도록 해주는 구문 입니다. 비트맵 인덱스에 대해서는 사용이 가능하지만 INDEX_COMBINE 힌트를 쓰는 것이 맞구요…
사용법은 다음과 같습니다.
[형식]
/*+ INDEX ( table [index [index]...] ) */
[예]
우선 통계정보를 생성하고 인덱스를 만들지 않은 상태에서 …
analyze table emp compute statistics
select ename, sal
from emp
where ename = 'FORD'
----------------------------------------------------------------------
Operation Object Name Rows Bytes Cost SELECT STATEMENT
--------------------------------------------------------------------
Optimizer Mode=ALL_ROWS 1 3
TABLE ACCESS FULL SCOTT.EMP 1 9 3
이번엔 인덱스를 만들고 INDEX 힌트를 사용해 보도록 하죠…
create index idx_emp_ename on emp(ename)
select /*+ index(emp idx_emp_ename) */
ename, sal
from emp
where ename = 'FORD'
Execution Plan
---------------------------------------------------------------
Operation Object Name Rows Bytes Cost SELECT STATEMENT
--------------------------------------------------------------Optimizer Mode=ALL_ROWS 1 2
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 1 9 2
INDEX RANGE SCAN SCOTT.IDX_EMP_ENAME 1 1
만약 테이블 다음에 인덱스명을 기술하지 않으면 Optimizer는 적절한 인덱스를 알아서 찾아 실행 계획을 수립합니다.
select /*+ index */
ename, sal
from emp
where ename = 'FORD'
---------------------------------------------------------------
Operation Object Name Rows Bytes Cost SELECT STATEMENT
--------------------------------------------------------------Optimizer Mode=ALL_ROWS 1 2
TABLE ACCESS BY INDEX ROWID SCOTT.EMP 1 9 2
INDEX RANGE SCAN SCOTT.IDX_EMP_ENAME 1 1
만약 테이블명 다음에 인덱스명을 여러 개 나열한다면 오라클 서버의 Optimizer는 적정한 인덱스를 찾아 실행 계획을 수립합니다.
/* INDEX(EMP pk_emp idx_emp_enmae */
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) (0) | 2012.07.19 |
---|---|
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(HASH) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(FULL) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(CLUSTER) (0) | 2012.07.19 |