oracle获取执行计划.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oracle获取执行计划   Oracle的执行计划查看方法   Oracle在执行一个SQL之前,首先需要看一下SQL的执行计划,然后在按照执行计划执行SQL,分析执行计划的工作是由优化器来执行的,在不同的条件下,一个SQL可能存在多条执行计划,但是在某个特定的时间点,特定的环境下,一定只有一种执行计划是最优的。   1、Oracle的优化方式   Oracle有两种优化方式:RBO(Rule-BasedOptimization)和CBO(Cost-BasedOptimization)   RBO:优化器在分析SQL语句的时候所遵循的优化规则是基于Oracle内部预定的一些规则。   CBO:优化器字分析SQL语句的时候主要是看语句执行的开销(Cost),这里的代价主要指CPU和内存,优化器在判断是否使用这种方式的时候,主要参照的是表及索引的统计信息。统计信息给出表的大小,有多少行,每行的长度等信息。   2、优化器的优化模式   优化模式包括:Rule,Choose,FirstRows,AllRows四种模式。   Rule:走基于规则的模式。   Choose:默认情况下Oracle使用这种优化模式,当一个表或索引有统计信息的时候,走CBO的方式;如果表或索引没有统计信息,表又不是特别的小,且相应的字段有索引,则走RBO的方式。在缺省情况下,ORACLE采取Choose的优化模式,为了避免不必要的FullTableScan,尽量避免采取此种优化模式,而直接采取CBO或者RBO的优化模式。   FirstRows:它与Choose方式是类似的,所不同的是当一个表有统计信息时,它将是以最快的方式返回查询的最先的几行,从总体上减少了响应时间。   AllRows:也就是我们所说的Cost的方式,当一个表有统计信息时,它将以最快的方式返回表的所有的行,从总体上提高查询的吞吐量。没有统计信息则走基于规则的方式。   需要注意的是:FirstRows和AllRows是有冲突的。   3、使用pl/sql查看执行计划   下面以MERP系统中的调度计划日志表为例来说明如何使用pl/sql查看oracle的执行计划。   1、启动pl/sql,打开相应的数据库表,如图1所示,表中总共有67704条数据:   图1打开调度计划日制表   这个表里面有一个字段叫做Input_time,存储的是调度计划日志被写入数据库表中的时间,默认情况下这个字段没有建立索引,因此建立如下SQL语句:   select*fromtb_merp_schedul_logt   where_time、与null值比较这几种情况使用不上索引;   2、like通配符只是出现在后面能够用上索引(like‘luo%’),通配符出现在前面用不上索引(like‘%jun’);   3、索引列的选择性不高的时候也用不上索引,例如一个表有个字段只有四种可能的值,数据表中有100万条记录,如果在这个只有四种可能的值的字段上面建立索引也不会使用到。   4、索引列是否是函数的参数,如果是,则使用不上,对于上面的sq如果写成下面的形式则也使用不上索引:   select*fromtb_merp_schedul_logt   whereto_char(_time,yyyy-mm-ddhh24:mi:ss)EXPLAINPLANFOR   SELECT*FROM;--要解析的SQL脚本   SQLSELECT*FROMTABLE(DBMS_);   3:在SQL*PLUS下(有些命令在PL/SQL下无效)执行如下命令:复制代码代码如下   :   SQLSETTIMINGON--控制显示执行时间统计数据   SQLSETAUTOTRACEONEXPLAIN--这样设置包含执行计划、脚本数据输出,没有统计信息   SQL执行需要查看执行计划的SQL语句   SQLSETAUTOTRACEOFF--不生成AUTOTRACE报告,这是缺省模式SQLSETAUTOTRACEON--这样设置包含执行计划、统计信息、以及脚本数据输出   SQL执行需要查看执行计划的SQL语句   SQLSETAUTOTRACEOFF   SQLSETAUTOTRACETRACEONLY--这样设置会有执行计划、统计信息,不会有脚本数据输出   SQL执行需要查看执行计划的SQL语句   SQLSETAUTOTRACETRACEONLYSTAT--这样设置只包含有统计信息   SQL执行需要查看执行计划的SQL语句   SETAUTOT[RACE]{ON|OFF|TRACE[ONLY]}[EXP[LAIN]][STAT[ISTICS]]参考文档:SQLPlusUsersGuideandReferenceRelea

文档评论(0)

sanshengyuan + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档