단일 컬럼 인덱스 보다 결합 컬럼 인덱스를 사용하는것이 인덱스를 통한 테이블 랜덤 엑세스를 줄일 수 있습니다.

Untitled

실습 예제 1. emp 테이블에 depno와 job에 결합 컬럼 인덱스를 거시오

@demo
create index emp_deptno_job
on emp(deptno,job);

실습 예제2. emp_deptno_job의 인덱스가 어떻게 생겼는지 구조를 확인하시오!

인덱스는 컬럼값+rowid 구성되어있습니다. 책의 목차를 연상하면 됩니다.

컬럼값: 목차 제목//페지 번호 : rowid

select deptno, job, rowid
from emp
where deptno >=0;

부서번호를 먼저 정렬해놓은 것을 기준으로 작업을 abcd순으로 정렬하고 있습니다.

실습 예제 3. 아래의 sql이 단일컬럼 인덱스를 사용할때와 결합 컬럼 인덱스를 사용할때의 차이가 무엇인가?

select * from tab1
where col='ABC' and col2 ='123';

설명: col단일 컬럼 인덱스만 사용했다면 6번을 테이블 엑세스를 하러가서 그 중 col2가 123인것을 찾아야 내야합니다.

그런데 col1+col2 결합 컬럼인덱스를 이용한다면 테이블 엑세스를 2번만 하면 됩니다.

실습 예제 4. 아래의 실습 환경을 만들고 다음의 sql이 아래의 3개의 인덱스중에 어느 인덱스를 옵티마이저가 선택할지 확인하시오!

create index emp_deptno on emp(deptno);
create index emp_job on emp(job);
create index emp_job_deptno on emp(job,deptno);