(인덱스는 deptno+sale_date로 구성)
select deptno, y.empno, y.empno, y.job, sal_tot, comm_tot
from (select empno,
sum(sal_amt) sal_tot,
sum(comm) comm_tot
from salary s
where s.deptno like '12%'
and s.sal_date between '20050101' and '20051231'
group by empno ) x, employee y
where y.empno = x.empno;
전체 범위로 처리되며 결합인덱스의 선행컬럼이 범위로 비교되어 액세스효율이 떨어진다.
select deptno into :v_deptno
from dept
where deptno like '12%';
select deptno, y.empno, y.empno, y.job, sal_tot, comm_tot
from (select empno,
sum(sal_amt) sal_tot,
sum(comm) comm_tot
from salary s
where s.deptno = :v_deptno
and s.sal_date between '20050101' and '20051231'
group by empno ) x, employee y
where y.empno = x.empno;
=> 장점: 부분범위 처리가 가능해지며 인덱스 선행컬럼이 =으로 변경되면서 효율적인 인덱스 액세스가 가능해진다. 사용자의 조건범위에 무관하게 좋은 수행속도를 얻을 수 있다.
단점: 어플리케이션의 부가적인 처리가 필요하다.