문서의 이전 판입니다!
예) SELECT /*+ FULL(t) */...... FROM big_table t WHERE cre_date >= '20050101';
예) /*+ HASH(table_name) */
예) /*+ CLUSTER(table_name) */
예) SELECT /*+ INDEX(s sales_pk) */.......... FROM sales s WHERE sale_date = '20051015'; SELECT /*+ INDEX(cust_v cust cname_idx) */...... FROM cust_v WHERE cust_name = 'TOMCAT';
여기서 cust_v는 cust테이블 액세스를 포함하고 있는 View이름이며, cname_idx는 cust 테이블의 cust_name컬럼에 대해 정의된 인덱스임.
옵티마이져가 실행계획을 수립할 때 지정한 인덱스는 제외하고, 다른 액세스 방법을 고려하도록 유도하는 힌트이다.
예) SELECT /*+ NO_INDEX(m member_pk) */.......... FROM member m WHERE member_id > 10200;
예) SELECT /*+ INDEX_ASC(a idx01) */........ FROM tab1 a WHERE col1 LIKE 'ABC%';
예) SELECT /*+ INDEX_DESC(a idx01) */........ FROM tab1 a WHERE col1 LIKE 'ABC%';
예) SELECT /*+ INDEX_COMBINE(e sal_bix hiredate_bix) */..... FROM emp e WHERE sal > 3000 AND hiredate < '20050715';
예) SELECT /*+ INDEX_FFS(table_name index_name) */......
이와 반대로 NO_INDEX_FFS 힌트에서 지정한 테이블의 인덱스에대해 '고속 전체 인덱스 스캔'방식을 제외한 다른 액세스 방법을 사용하도록 유도한다.
즉, 테이블을 전혀 액세스하지 않고 인덱스들만으로 쿼리를 처리할수 있어야 한다. 인덱스 조인은 2개 이상의 인덱스를 범위 스캔한 결과를 ROWID로 해쉬 조인을 수행하여 결과를 얻는다.
예) SELECT /*+ INDEX_JOIN(e SAL_BMP HIREDATE_IX) */ sal, hiredate FROM emp e WHERE hiredate < sysdate AND sal > 2000;
예) SELECT /*+ INDEX_SS(e emp_idx) */.... FROM emp e WHERE hiredate = sysdate
이와 반대로 NO_INDEX_SS 힌트는 힌트에서 지정한 테이블의 인덱스에 대해 스킵스캔을 제외한 다른 액세스 방법을 사용하도록 유도한다.
예) SELECT /*+ INDEX_SS_DESC(e ename_ix) */……..
FROM employees e WHERE first_name = 'Steven';