网站大量收购闲置独家精品文档,联系QQ:2885784924

使用EXPLAN和STOREDOUTLINES范例.ppt

  1. 1、本文档共127页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
步 骤 动 作 6.1 这是I_BK_06的索引范围扫描。这是第一步。索引位于列BK_SHIFT_DATE上。这一步将对这个索引执行一次扫描并产生两个日期之内的ROWID列表 5.1 检索了BK表上的行 6.2 扫描I_EE_01索引。这个索引位于列EE_EMPNO上。利用前一步检索到的BK_EMPNO,将对这个索引进行扫描来检索ROWID,生成与BK_EMPNO匹配的EE_EMPNO列表 5.2 检索表EE的所有行 4.1 嵌套循环。连接两个列表,并组合成一个列表 3.1 过滤器。用到了WHERE子句的其余条件 2.1 SORT_ORDER_BY。根据ORDER BY子句定义的顺序对剩余的行排序 1.0 告诉我们语句的类型 启用AUTOTRACE ………………………….. SET AUTOTRACE ON的作用如下: 1、执行SELECT语句 2、自动显示执行计划和一些统计信息 打开autotrace:执行结果、执行计划、统计信息 不显示查询的输出结果 仅显示执行计划 仅显示统计信息 在分区模式下面使用的EXPLAIN PLAN 建立一个分区表 create table dept1(deptno number(2),dept_name varchar2(30)) partition by range(deptno) (partition d1 values less than (10),partition d2 values less than (20),partition d3 values less than (maxvalue)) / insert into dept1 values (1, DEPT 1); insert into dept1 values (7, DEPT 7); insert into dept1 values (10, DEPT 10); insert into dept1 values (15, DEPT 15); insert into dept1 values (22, DEPT 22); create index dept_index on dept1 (deptno) local(partition d1,partition d2 ,partition d3 ) / 强制对两个分区进行全表扫描。(加”||’,类似加函数) 实际对全表所有分区进行了扫描。 select operation,options,id,object_name,partition_start start_p,partition_stop stop from plan_table / 无论是索引还是表,走的都是一个分区。这个语句的访问实现了分区的优势。 我们通过这个start和stop可以非常清楚的知道分区的意义是否实现。 (考虑是在全局分区上跑,还是局部分区上运行) 这一个点很重要。 在不使用trace的情况下查找大的硬盘或内存的读取量。 这就需要使用v$sqlarea select disk_reads,sql_text from v$sqlarea where disk_reads 1000 order by disk_reads; 查找磁盘读取量大于1000的SQL语句。 查找内存读取率大于10000的SQL语句。 select buffer_gets,sql_text from v$sqlarea (在shared pool 中的SQL语句) where buffer_gets 10000 order by buffer_gets / 我们根据自己的系统的情况进行分析,确认一个边界值。然后寻找所有超过这个边界值语句。按照降序进行排序输出。 对于有问题的SQL语句进行分析的优化。 select???? ?disk_reads, sql_text from????? ??v$sqlarea where???? ??disk_reads 10000 order by ??disk_reads desc; DISK_READS?????? SQL_TEXT 12987 select?????? ?order#,columns,types from orders where?substr(orderid,1,2)=:1 11131 select?????? ?custid, city from customer where?city = CHICAGO 这个输出结果表明有两个有问题的查询引起了大量磁盘读取。第一个就是使用SUBSTR函数使ORDERID函数上的索引受到限制;第二个显示了CITY上缺

文档评论(0)

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

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

1亿VIP精品文档

相关文档