[Hint]ACCESS 경로를 변경하는 힌트(INDEX_FFS)
[Hint]ACCESS 경로를 변경하는 힌트(INDEX_FFS)
이 힌트의 의미는 인덱스를 FAST FULL SCAN하라는 것인데 보통 인덱스에 대한 스캔은 단일 블록 스캔인데 반해 인덱스 패스트 풀 스캔은 Multi Block Scan 입니다. 이왕 데이터를 읽을 때 하나씩 블록을 읽는 것보다 당연히 여러 개의 블록을 읽는다면 수행속도가 빨라질 것입니다.
물론 이 힌트가 동작하기 위해서는 SELECT절에 나타나는 컬럼들이 INDEX_FFS의 인자로 사용된 인덱스의 컬럼 이어야 합니다. 예를 들어 index_ffs의 인자로 idx_emp_ename(EMP 테이블의 ename 컬럼에 대한 인덱스) 이 주어졌다면 SELECT절에 나열되는 컬럼이 ename 이여야 한다는 것이죠...
[형식]
/*+ INDEX_FFS ( table [index [index]...] ) */
SELECT /*+ INDEX_FFS(EMP idx_emp_ename) */ ename
FROM EMP
WHERE ENAME LIKE 'S%';
------------------------------------------------------------------
Operation Object Name Rows Bytes Cost SELECT STATEMENT
------------------------------------------------------------------Optimizer Mode=ALL_ROWS 2 2
INDEX FAST FULL SCAN SCOTT.IDX_EMP_ENAME 2 12 2
[예]
SELECT /*+ INDEX_FFS ( o order_pk ) */ COUNT(*)
FROM order_items l, orders o
WHERE l.order_id > 50
AND l.order_id = o.order_id;
물론 위와 같은 경우 뿐 아니라 데이터의 개수를 헤아리는 COUNT(*)를 사용할 때도 INDEX_FFS를 사용하면 많은 시간을 단축할 수 있으니 이 부분은 Oracle Tip에 있는 COUNT(*)를 빠르게… 부분을 참고 하세요
'프로그래밍 > oracle' 카테고리의 다른 글
oracle - [Hint]ACCESS 경로를 변경하는 힌트(NO_INDEX) (0) | 2012.07.19 |
---|---|
oracle - [Hint]ACCESS 경로를 변경하는 힌트(NO_EXPAND) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_DESC) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_COMBINE) (0) | 2012.07.19 |
oracle - [Hint]ACCESS 경로를 변경하는 힌트(INDEX_ASC) (0) | 2012.07.19 |