SQL执行过程和优化.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 前言 问题 问题 SQL重要性 SQL语句处理过程 查看执行计划 查看执行计划 查看执行计划 查看执行计划 OEM和iSQL*Plus 减少SQL解析的技术 减少SQL解析的技术 减少SQL解析的技术 优化器的优化方式 优化器的优化模式 基于规则的优化器 基于代价的优化器 优化器的发展 再议Exists、In的区别 再议Exists、In的区别 总结 访问Table的方式 全表扫描 Rowid扫描 索引扫描 索引扫描 索引扫描 索引扫描 索引扫描 索引扫描 索引扫描 索引扫描 表的主要连接方法 排序合并连接 排序 - 合并连接 嵌套循环 哈希连接 三个连接比较 笛卡儿乘积 索引分类 索引分类 索引分类   建议建立索引的情况   建议建立索引的情况 不建议建立索引的情况 不建议建立索引的情况 不使用索引的情况 注意事项 概述 诊断工具使用流程 ADDM操作流程 STA操作流程 使用途径 链接 1)唯一索引扫描(Index Unique Scans) ? 利用主键字段或含有唯一约束的字段选择一行记录时,通常发生唯一索引扫描。 2)索引范围扫描(Index Range Scans) 索引范围扫描返回的数据按照索引字段值升序排列,值相同的按Rowid升序排列。如果使用了ORDER BY ASC,而且排序字段是索引字段时Oracle不会对ORDER BY再次排序。 SQL select * from t where coly0 order by coly; Execution Plan ---------------------------------------------------------- ?? 0????? SELECT STATEMENT Optimizer=CHOOSE ?? 1??? 0?? TABLE ACCESS (BY INDEX ROWID) OF T ?? 2??? 1???? INDEX (RANGE SCAN) OF IND_T (NON-UNIQUE) 可以看到执行计划中无SORT 步骤,说明Oracle忽略了ORDER BY子句。 优化器在下列情况会使用索引范围扫描: → 在唯一索引列上使用了range操作符( = = between)。 → 对非唯一索引列上进行的任何查询。 → COL1 LIKE ‘ABC%’会做索引范围扫描,而COL1 LIKE ‘%ABC’则不会。 → 在组合索引上,只使用部分列进行查询。 3)索引降序范围扫描 ????如果在order by中指定了索引是降序排列的,或者使用了INDEX_DESC提示,优化器会使用索引降序范围扫描。 例如: SQL select colx,coly from t where coly3 order by coly desc; ?????????? COLX??????????? COLY ---------------?? --------------- ????????????? 1?????????????? 2 ????????????? 1?????????????? 1 ????????????? 1?????????????? 0 Execution Plan ---------------------------------------------------------- ?? 0????? SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=4 Bytes=104) ?? 1??? 0?? TABLE ACCESS (BY INDEX ROWID) OF T (Cost=1 Card=4 Bytes=104) ?? 2??? 1???? INDEX (RANGE SCAN DESCENDING) OF IND_T (NON-UNIQUE) (Cost=2 Card=1) 4)跳跃式索引扫描 ????跳跃式索引扫描是用来提高复合索引效率的,通常当复合索引的第一个索引字段不在语句中指定时是无法使用复合索引的,此时如果复合索引的第一个索引字段DISTINCT值非常小,而复合索引的其他索引字段DISTINCT值非常大时,可以使用跳跃式索引扫描来跳过该复合索引的第一个索引字段。跳跃式扫描会使复合索引在逻辑上分裂成N个较小的索引,N值等于复合索引的第一个索引字段的DISTINCT值。 SQL select* from employees; SEX????? EMPLOYEE_ID?? ADDRESS ------??? --------------------?? -------------------- F????????????????

您可能关注的文档

文档评论(0)

企业资源 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档