데이터베이스/친절한 SQL 튜닝

옵티마이저에게 사용할 인덱스(index) 힌트주기

반응형

기본적으로 옵티마이저가 SQL을 수행할 때 인덱스를 통계정보를 이용하여 선택하지만 그것은 정확한 것이 아니라 자신이 알고 있는 수준까지 정보를 가지고 판단하기에 정확한 인덱스를 사용자가 선택하여 수행할 수 있다.


그 방법으로 쿼리 수행시 힌트를 부여하는 것이다.


힌트를 부여하는 방법은 다음과같다.

1
select /*+ 인덱스명(t) */ * from t where deptno = 10 and no = 1;
cs


- /*+ 인덱스 */를 사용하여 힌트를 부여한다.

- 인덱스명을 여러개 나열하고 싶을때는 공백으로 구분하여 나열한다. ,를 사용하는 경우 앞에 인덱스만 사용된다.

- 인덱스 내부에 테이블을 적을때 스키마명까지 입력하면 안된다. index(scott.tmp)

- From 절에 Alias를 사용했다면 힌트에도 Alias를 사용해야 한다.

- 특정 테이블만 Alias를 줄 수 있다.


1
 select /*+ INDEX(e empno) */ e.ENAME, d.DNAME from emp e, dept d;
cs


반응형