执行计划-准备篇
目前我所知道的有两种方法查看执行计划;
●一个是用PLSQL Developer工具,用F5执行语句就能看见执行计划
●另一个就是用autotrace语句(必须在SQL*Plus内运行)
我装的是oracle10g,默认不能直接调用这个语句,必须先设置一下:
1.用sys用户运行脚本ultxplan.sql
建立这个表的脚本是:(UNIX:$ORACLE_HOME/rdbms/admin, Windows:%ORACLE_HOME%\rdbms\admin)ultxplan.sql。
SQL> connect sys/sys@colm2 as sysdba;
SQL> @C:\oracle\ora92\rdbms\admin\utlxplan.sql;
SQL> create public synonym plan_table for plan_table; --建立同义词
SQL> grant all on plan_table to public;--授权所有用户
2.要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,这个脚本在目录(UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%\sqlplus\admin)中;
SQL> @C:\oracle\ora92\sqlplus\admin\plustrce.sql;
3.然后将角色plustrace授予需要autotrace的用户;
SQL>grant plustrace to public;
通过设置AUTOTRACE系统变量可以控制这个报告:
set autotrace off: 不生成autotrace报告,这是默认设置
set autotrace on explain: autotrace报告只显示优化器执行路径
set autotrace on statistics: autotrace报告只显示sql语句的执行统计信息
set autotrace on: autotrace报告既包括优化器执行路径,又包括SQL语句的执行统计信息。
set autotrace traceonly: 这与set autotrace on类似,但是不显示用户的查询输出(如果有的话)
(参考自:http://blog.sina.com.cn/s/blog_4b8abbd60100augv.html)
更新一下开关的说明
set auto[race] {on|off|trace[only]} [exp[plan]][stat[litics]]
set autot off |
对话禁止使用autotrace命令 |
set autot on |
这个命令包括exp和stat 执行语句 生成explain plan 生成统计信息 |
set auto trace |
不执行sql命令,这同样包括exp和stat 生成explain plan 生成统计信息 |
set autot trace exp stat |
与set autot trace相同 |
set autot trace exp |
不执行sql语句 生成explain plan |
set autot trace stat |
不执行sql语句 生成统计信息 |
以下是执行set autotrace on出来的内容
SQL> set autotrace on;
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
执行计划
----------------------------------------------------------
Plan hash value: 3383998547
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 4 | 120 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DEPT | 4 | 120 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
统计信息
----------------------------------------------------------
4 recursive calls
0 db block gets
16 consistent gets
0 physical reads
0 redo size
641 bytes sent via SQL*Net to client
400 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
4 rows processed
酱紫执行计划应该都知道怎么使用了吧。下次讲执行计划怎么看。