본문 바로가기

프로그래밍/oracle

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

반응형

[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(*)를 빠르게… 부분을 참고 하세요

http://oraclejava.co.kr/zboard/view.php?id=oracleTip&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=598
 
 
 
 

반응형