oracle -- 查詢執行計劃,判讀查詢語句優劣

以oracle的scott帳戶:找到員工表中薪水大於本部門平均薪水的員工爲例

多表查詢方式:

select e.empno, e.ename, e.sal, d.avgsal
from emp e, (select deptno, avg(sal) avgsal from emp group by deptno) d
where e.deptno = d.deptno
and e.sal > d.avgsal ;sql

執行結果oracle

相關子查詢方式:

select  empno,
    ename,
    sal,
    (select avg(sal) from emp where deptno = e.deptno) avgsal
  from emp e
where sal > (select avg(sal) from emp where deptno = e.deptno)spa

 

查詢執行計劃模板:

explain plan for             #解釋執行計劃3d

執行計劃                           #sql語句塊,即你查詢的sql語句複製粘貼到這裏便可      blog

select * from table(dbms_xplan.display);    #查詢執行計劃table

 

多表查詢執行計劃:

explain plan for #解釋執行計劃
select e.empno, e.ename, e.sal, d.avgsal
from emp e, (select deptno, avg(sal) avgsal from emp group by deptno) d      #sql語句
where e.deptno = d.deptno
and e.sal > d.avgsal ;
select * from table(dbms_xplan.display); #查詢執行計劃模板

返回結果:select

相關子查詢執行計劃:

explain plan for    #解釋執行計劃
select empno,
ename,
sal,
(select avg(sal) from emp where deptno = e.deptno) avgsal              #sql語句
from emp e
where sal > (select avg(sal) from emp where deptno = e.deptno);
select * from table(dbms_xplan.display);     #查詢執行計劃表sql語句

返回結果:im

 

 

觀察二者CPU使用狀況,優劣一目瞭然。

相關文章
相關標籤/搜索