欢迎来到天天文库
浏览记录
ID:32170279
大小:42.50 KB
页数:8页
时间:2019-02-01
《用explainplan分析sql语句》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用EXPLAINPLAN分析SQL语句如何生成explainplan? 解答:运行utlxplan.sql.建立plan表 针对特定SQL语句,使用explainplansetstatement_id='tst1'intoplan_table 运行utlxplp.sql或utlxpls.sql察看explainplanEXPLAINPLAN是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句.通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.你需要按照从里到外,从上到下的次序解读分析的
2、结果.EXPLAINPLAN分析的结果是用缩进的格式排列的,最内部的操作将被最先解读,如果两个操作处于同一层中,带有最小操作号的将被首先执行.NESTEDLOOP是少数不按照上述规则处理的操作,正确的执行路径是检查对NESTEDLOOP提供数据的操作,其中操作号最小的将被最先处理.译者按:通过实践,感到还是用SQLPLUS中的SETTRACE功能比较方便.举例:SQL>list1SELECT*2FROMdept,emp3*WHEREemp.deptno=dept.deptnoSQL>setautotracetraceonly/*traceonly可以不显示执行结果*/SQL>
3、/14rowsselected.ExecutionPlan----------------------------------------------------------0SELECTSTATEMENTOptimizer=CHOOSE10NESTEDLOOPS21TABLEACCESS(FULL)OF'EMP'31TABLEACCESS(BYINDEXROWID)OF'DEPT'43INDEX(UNIQUESCAN)OF'PK_DEPT'(UNIQUE)Statistics--------------------------------------------------
4、--------0recursivecalls2dbblockgets30consistentgets0physicalreads0redosize2598bytessentviaSQL*Nettoclient503bytesreceivedviaSQL*Netfromclient2SQL*Netroundtripsto/fromclient0sorts(memory)0sorts(disk)14rowsprocessed通过以上分析,可以得出实际的执行步骤是:1.TABLEACCESS(FULL)OF'EMP'2.INDEX(UNIQUESCAN)OF'PK_DEPT'(U
5、NIQUE)3.TABLEACCESS(BYINDEXROWID)OF'DEPT'4.NESTEDLOOPS(JOINING1AND3) 注:目前许多第三方的工具如TOAD和ORACLE本身提供的工具如OMS的SQLAnalyze都提供了极其方便的EXPLAINPLAN工具.也许喜欢图形化界面的朋友们可以选用它们.----------------------------------------------------------------------------对于sql执行的小量高低.我们可以通过执行计划的信息基本上可以进行分析查看该SQL语句执行的时间.连接顺序及浪费的
6、数据库资源等信息,从而判断该SQL语句执行的效率如何,下面就简单的介绍一下执行计划的使用2. Explain使用OracleRDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为AccessPath)。从而使我们选择最优的查询方式达到最大的优化效果。2.1. 安装要使用执行计划首先需要执行相应的脚本。使用Explain工具需要创建Explain_p
7、lan表,这必须先进入相关应用表、视图和索引的所有者的帐户内。Oracle的介质中包含有执行此项工作的SQL源程序,例如:ORA_RDBMS:XPLAINPL.SQL(VMS)$ORACLE_HOME/rdbms/admin/utlxplan.sql(UNIX)该脚本后会生成一个表这个程序会创建一个名为plan_table的表,表结构如下:我们简单的介绍一下主要的字段含义:字段名 字段类型 含义STATEMENT_ID VARCHAR2(30) expla
此文档下载收益归作者所有