oracle sql语句分析explain explan

原创 2011年01月21日 09:20:00

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 [=] < string literal > ] [ INTO < table_name > ]

FOR < sql_statement >

 

其中:

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;

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

MYSQL explain详解

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。...
  • zhuxineli
  • zhuxineli
  • 2013年11月24日 17:55
  • 171144

MySQL EXPLAIN 命令详解学习

MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行 SQL 语句的。这条命...
  • woshiqjs
  • woshiqjs
  • 2014年04月19日 20:50
  • 20122

MySQL explain执行计划解读

本文我们主要介绍了MySQL性能分析以及explain的使用,包括:组合索引、慢查询分析、MYISAM和INNODB的锁定、MYSQL的事务配置项等,希望能够对您有所帮助。 1.使用explain语句...
  • xifeijian
  • xifeijian
  • 2014年03月02日 21:22
  • 51676

使用 EXPLAIN 关键字 检查SQL语句效率

explain详细说明 通过explain可以知道mysql是如何处理语句,分析出查询或是表结构的性能瓶颈。通过expalin可以得到: 1. 表的读取顺序 2.表的读取操作的操作类型 3.哪...
  • xm1331305
  • xm1331305
  • 2014年05月14日 14:10
  • 3873

Oracle中SQL语句运行过程的深度解析

最近项目做完了(也许并不能说做完了),但是出现了一个致命的障碍,就是性能。现在想想TOP的作者是讲的是多么的精辟,性能是贯穿在项目需求,项目分析设计,项目编码和单元测试、集成等各个阶段。而不是等项目开...
  • chenjie19891104
  • chenjie19891104
  • 2011年08月03日 17:26
  • 7969

Oracle SQL性能检测分析

1. 概要:之前在网站性能优化实践-for循环中的数据库操作和网站性能优化实践-数据库分页和轻量级Session都提到了数据库操作在网站性能优化中的重要作用,对于mysql数据库,在使用mysql的e...
  • zhoen
  • zhoen
  • 2010年06月25日 12:36
  • 5312

mysql explain 的type解释

(1)SYSTEM (2)CONST (3)EQ_REF (4)REF (5)REF_OR_NULL (6)RANGE (7)INDEX_SCAN (8)ALL (9)UNIQUE_S...
  • seelye
  • seelye
  • 2015年06月11日 09:46
  • 13591

[Oracle]高效的SQL语句之分析函数(一)--sum()

 实际应用中我们可以通过sum()统计出组中的总计或者是累加值,具体示例如下:1.创建演示表create table empasselect * from scott.emp;alter table ...
  • huanghui22
  • huanghui22
  • 2007年05月03日 00:00
  • 11928

ORACLE EXPLAIN PLAN的总结 (优化SQL语句)

ORACLE EXPLAIN PLAN的总结 文章分类:数据库 在ORACLE数据库中,需要对SQL语句进行优化的话需要知道其执行计划,从而针对性的进行调整.ORACLE的执行计划的获得有几种方法...
  • doupeihua
  • doupeihua
  • 2016年09月13日 10:55
  • 1572

explain分析sql效果

explain的列分析 id:  代表select 语句的编号, 如果是连接查询,表之间是平等关系, select 编号都是1,从1开始. 如果某select中有子查询,则编号递增. expl...
  • freedomai
  • freedomai
  • 2015年04月14日 23:17
  • 498
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle sql语句分析explain explan
举报原因:
原因补充:

(最多只允许输入30个字)