查看执⾏计划oracle,查看Oracle执⾏计划的⼏种⽅法
查看Oracle执⾏计划的⼏种⽅法
⼀、通过PL/SQL Dev⼯具
1、直接File->New->Explain Plan Window,在窗⼝中执⾏sql可以查看计划结果。其中,Cost表⽰cpu的消耗,单位为n%,Cardinality 表⽰执⾏的⾏数,等价Rows。
2、先执⾏ EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的执⾏计划了,看到的结果和1中的⼀样,所以使⽤⼯具的时候推荐使⽤1⽅法。
注意:PL/SQL Dev⼯具的Command window中不⽀持set autotrance on的命令。还有使⽤⼯具⽅法查看计划看到的信息不全,有些时候我们需要sqlplus的⽀持。
⼆、通过sqlplus
1.最简单的办法
Sql> set autotrace on
Sql> select * from dual;
执⾏完语句后,会显⽰explain plan 与 统计信息。
这个语句的优点就是它的缺点,这样在⽤该⽅法查看执⾏时间较长的sql语句时,需要等待该语句执⾏成功后,才返回执⾏计划,使优化的周期⼤⼤增长。如果不想执⾏语句⽽只是想得到执⾏计划可以采⽤:
Sql> set autotrace traceonly
这样,就只会列出执⾏计划,⽽不会真正的执⾏语句,⼤⼤减少了优化时间。虽然也列出了统计信息,但是因为没有执⾏语句,所以该统计信息没有⽤处,如果执⾏该语句时遇到错误,解决⽅法为:
(1)在要分析的⽤户下:
Sqlplus > @ ?
dbmsadminutlxplan.sql
(2) ⽤sys⽤户登陆
Sqlplus > @ ?sqlplusadminplustrce.sql
Sqlplus > grant plustrace to user_name;
- - user_name是上⾯所说的分析⽤户
2.⽤explain plan命令
(1) sqlplus > explain plan for select * user
(2) sqlplus > select * from table(dbms_xplan.display);
上⾯这2种⽅法只能为在本会话中正在运⾏的语句产⽣执⾏计划,即我们需要已经知道了哪条语句运⾏的效率很差,我们是有⽬的只对这条SQL语句去优化。其实,在很多情况下,我们只会听⼀个客户抱怨说现在系统运⾏很慢,⽽我们不知道是哪个SQL引起的。此时有许多现成的语句可以出耗费资源⽐较多的语句,如:
SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets, executions,
buffer_gets/executions AVG from v$sqlarea
WHERE executions>0 AND buffer_gets > 100000 ORDER BY 5;
ADDRESS &n
sql优化的几种方式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论