--오늘의 마지막 문제. 아래의 SQL의 조인 방법은 무조건 NESTED LOOP 조인이 되게하고 조인순서를 지정해서 튜닝전과 튜닝후를 비교하시오
@demo
--튜닝 전:
select /*+ leading(d e) use_nl(e) */ e.ename, e.sal, d.loc
from emp e, dept d
where e.deptno = d.deptno and e.ename='SCOTT';
select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));
/*-------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 35 |
| 1 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 35 |
| 2 | TABLE ACCESS FULL| DEPT | 1 | 82 | 4 |00:00:00.01 | 7 |
|* 3 | TABLE ACCESS FULL| EMP | 4 | 1 | 1 |00:00:00.01 | 28 |
-------------------------------------------------------------------------------------*/
-- 튜닝 후:
select /*+ leading(e d) use_nl(d) */ e.ename, e.sal, d.loc
from emp e, dept d
where e.deptno = d.deptno and e.ename='SCOTT';
select * from table(dbms_xplan.display_cursor(null, null, 'ALLSTATS LAST'));
/*-------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 14 |
| 1 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 14 |
|* 2 | TABLE ACCESS FULL| EMP | 1 | 1 | 1 |00:00:00.01 | 7 |
|* 3 | TABLE ACCESS FULL| DEPT | 1 | 1 | 1 |00:00:00.01 | 7 |
-------------------------------------------------------------------------------------*/