欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle SQL语句分析Explain Plan

程序员文章站 2022-05-02 16:44:58
...

EXPLAIN PLAN 是一个很好的分析SQL 语句的工具,它甚至可以在不执行SQL 的情况下分析语句. 通过分析,我们就可以知道ORACLE 是怎么

EXPLAIN PLAN 是一个很好的分析SQL 语句的工具,它甚至可以在不执行SQL 的情况下分析语句. 通过分析,我们就可以知道Oracle 是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.

你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN 分析的结果是用缩进的格式排列的, 最内部的操作将被最先解读, 如果两个操作处于同一层中,带有最小操作号的将被首先执行.

1,,安装

以sys用户执行创建脚本,脚本位于$ORACLE_HOME/rdbms/admin/utlxplan.sql。

执行的方法,cp $ORACLE_HOME/rdbms/admin/utlxplan.sql /home/utlxplan.sql

进入数据库中执行:@/home/utlxplan.sql

执行完之后,数据库中会有个plan的表,用来存储分析的信息。

2,使用

语法:

explain PLAN [ SET STATEMENT_ID [=] ] [ INTO ]

FOR

其中:

STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其它执行计划区别开来。

TABLE_NAME:是plan表名,它结构如前所示,你可以任意设定这个名称。

SQL_STATEMENT:是真正的要分析的SQL语句

例如:

explain plan set statement_id='T_TEST' for select * from t;

分析:

SQL>SELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID

2 FROM PLAN_TABLE a

3 WHERE STATEMENT_ID='T_TEST'

4 ORDER BY Id;

grant all on plan_table to public;#授权所有用户

为了在sql*plus中使用autotrace。需要执行一下操作:

要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,这个脚本在目录 (UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%/sqlplus/admin)中;

方法通ultxplain.sql一样。

授权:将plustrace的权限授予需要autotrace的用户

grant plustruce to public;

启动关闭autotrace:

set autotrace on/off;

只显示执行计划

set autotrace on explain;

只显示统计信息:

set autotrace on statistics;

显示执行计划,屏蔽执行结果;

set autotrace on traceonly;

仅仅显示执行计划,屏蔽执行结果:

set autotrace on traceonly explain;

Oracle SQL语句分析Explain Plan