当前位置: 代码迷 >> SQL >> 查看sql执行计划形式
  详细解决方案

查看sql执行计划形式

热度:98   发布时间:2016-05-05 15:02:29.0
查看sql执行计划方式

????? 查看oracle的sql执行计划主要有以下几种方式

?

1???????? 在线查看执行计划

1.1??????? explain plan for

1.1.1?????? 规则

?

????? sql窗口或sql*plus终端

???????1、首先执行explain plan for [目标sql语句] ;取得计划解释

????? 2、然后通过DBMS_XPLAN.DISPLAY方法生成计划详情输出:

????? select * from table(DBMS_XPLAN.DISPLAY);

????? select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));

?

?

1.1.2?????? 举例

?

?????? explain plan for select count(1) from dual;

????? select * from table(DBMS_XPLAN.DISPLAY);

????? select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));

????? 输出如下所示:

??

?

???

2???????? 使用oracle第三方工具

2.1??????? plsql developer

2.1.1????? 规则

?

?????? 在sql窗口,选定[目标sql语句],F5快捷键直接会跳到Explain Plan Window或直接File->New->Explain Plan Window,在窗口中输入[目标sql语句],就可以查看计划结果,

其中,Cost表示cpu的消耗,单位为n%Cardinality表示执行的行数,等价Rows

?

2.1.2?????? 举例

?????? ?File->New->Explain Plan Window,输入

??? select * from dual,F10输出如下所示:

???

?

?

2.2??toad

2.2.1?????? 规则

?

???? 在toadEdits窗口,选定[目标sql语句], (Ctrl+E)快捷键或点击[Run explain plan for current???? statement],即可在下方输出执行计划详情。

?

2.2.2?????? 举例



?

?

3???????? SQL*PLUS

???? sql*plus命令行终端(PL/SQL Dev工具的Command window中不支持set autotrance on的命令。还有使用工具方法查看计划看到的信息不全,有些时候可能需要sqlplus的支持)中,除了支持explain plan for的那种方式外,还支持以set autotrace on的方式进行较详细的计划及统计信息输出。

????? 注意:

????? ?1、如果PLAN_TABLE表不存在:

????? 执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建plan_table表。

?????? 2、如果PLUSTRACE角色不存在,

????? 执行$ORACLE_HOME/sqlplus/admin/plustrce.sql

3.1??????? 规则

? 1、执行set autotrace on; 生成AUTOTRACE 报告

? 2、然后执行[目标sql语句],当完成后会把结果及执行计划、统计信息等自动显示出来。

???

????? 关于Autotrace几个常用选项附加说明:

?????? 1SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式

?????? 2SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告

????? 3SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息

????? 4SET AUTOTRACE ON ----------------- 包含执行计划和统计信息

????? 5SET AUTOTRACE TRACEONLY ------ set autotrace on,但是不显示查询

3.2??????? 举例

????? 登陆sqlplus终端连接指定数据库后,依次执行以下:

????? ?set autotrace on;

????? select * from dual;

??????

?