EXPLAIN_PLAN总结.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EXPLAIN_PLAN总结

EXPLAIN的使用 Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。 安装 要使用EXPLAIN首先要执行相应的脚本,创建出Explain_plan表。 具体脚本执行如下: $ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX) 该脚本后会生成一个表这个程序会创建一个名为plan_table的表。 使用 常规使用语法: explain PLAN [ SET STATEMENT_ID [=] string literal ] [ INTO table_name ] FOR sql_statement 其中: STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其它执行计划区别开来。 TABLE_NAME:是plan表名,它结构如前所示,你可以任意设定这个名称。 sql_statement:真正的SQL语句。 比如: SQLexplain plan set statement_id=T_TEST for select * from t_test; 执行下面语句可以查询到执行计划 SQLSELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID FROM PLAN_TABLE a WHERE STATEMENT_ID=T_TEST ORDER BY Id; 也可以用这句话 select * from table(dbms_xplan.display); 可以把所有PLAN_TABLE里的数据罗列出来。 AUTOTRACE的使用方法 安装 用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;--授权所有用户 要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,这个脚本在目录(UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%\sqlplus\admin)中; SQL @C:\oracle\ora92\sqlplus\admin\plustrce.sql; 然后将角色plustrace授予需要autotrace的用户; SQLgrant plustrace to public; 经过以上步骤的设置,就可以在sql*plus中使用autotrace了 使用 使用起来非常方便,只要使用一条命令就可以了 SQLSET AUTOTRACE ON; *autotrace功能只能在SQL*PLUS里使用 其他一些使用方法: 在SQLPLUS中得到语句总的执行时间 SQL set timing on; 只显示执行计划 会同时执行语句得到结果 SQLset autotrace on explain 比如: sql select count(*) from test; count(*) ------------- 4 Execution plan ---------------------------- 0 select statement ptimitzer=choose (cost=3 card=1) 1 0 sort(aggregate) 2 1 partition range(all) 3 2 table access (full) of t_test (cost=3 card=900) 只显示统计信息 会同时执行语句得到结果 SQLset autotrace on statistics; (备注:对于SYS用户,统计信息将会是0) 显示

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档