局部范围扫描.pptxVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
局部范围扫描

1 局部范围扫描 局部范围扫描概念 局部范围扫描的应用原则 提高局部范围扫描执行速度的原理 向局部范围扫描引导的方法 1.局部范围扫描概念 所谓局部范围扫描,并不是指扫描满足WHERE条件的全部数据行,而是指只要扫描了数组批量【一个“运输单位”】的行数后就立刻返回结果,在用户再次提出要求之前暂停停止执行的处理方式【与页面的“分页”相对应,每次只显示给受试一个页面的内容,当点击“下一页”后,再查询新的一页数据给用户】。 数据的处理范围大,只不过是站在数据的立场上来看而已;如果站在运输的立场上来看则可能并非如此。 1.局部范围扫描概念 全部范围扫描和局部范围扫描的比较 4 局部范围扫描 局部范围扫描概念 局部范围扫描的应用原则 提高局部范围扫描执行速度的原理 向局部范围扫描引导的方法 2.局部范围扫描的应用原则 局部范围扫描的条件 无聚集函数 无排序操作 不同优化模式下的局部范围扫描 对于某个SQL而言,即使逻辑上可以实现局部范围扫描,也会随着优化器模式的不同而存在一定差异。在RBO和CBO的FIRST_ROW模式下,基本都是按照局部范围扫描的方式执行SQL;但是在CBO的ALL_ROWS模式下,基本都是按照全部范围扫描方式进行。 6 局部范围扫描 局部范围扫描概念 局部范围扫描的应用原则 提高局部范围扫描执行速度的原理 向局部范围扫描引导的方法 3.提高局部范围扫描执行速度的原理 从常识的角度来思考,也可以知道从较小的数据范围中查询的执行速度比从较大数据范围中查询的执行速度快?真是这样吗? 如果使用局部范围扫描,则情况就发生了变化,从较大数据范围中查询数据的输出速度反倒比从较小数据范围中查询数据的输出速度快。 举例: Select * from order; (1)? Select * from order order by item; (1) 即使表中有几百万行记录,第一个SQL但也在0.01s内就输出了结果。 【启动了局部范围扫描】? 第二个SQL则花费了很长时间才输出结果,是什么原因? 是因为排序操作吗? 其实执行速度慢的原因不仅在于排序,同样的还因为排序操作启动了整体数据范围的扫描。 提高局部范围扫描的基本原理:尽快找到满足一个运输单元的数据。 3.提高局部范围扫描执行速度的原理 满足驱动查询条件的数据范围越小,所执行的操作量就越大;而满足过滤查询条件的数据范围越大,所执行的操作数越少。因此我们在确定SQL的执行计划时,不光要考虑连接表的基数,还要考虑是否可以实现局部范围扫描。 9 局部范围扫描 局部范围扫描概念 局部范围扫描的应用原则 提高局部范围扫描执行速度的原理 向局部范围扫描引导的方法 4.向局部范围扫描引导的方法— 利用访问路径对Sort的代替 回顾:不论是一般索引还是聚簇索引都是按照索引值进行了排序。 Order by会以全部范围扫描的方式进行,但如果我们在Order by中所指定的列与负责读取数据的索引列相同,则可以通过把索引把SQL向局部范围扫描引导。? 索引列序是实现局部范围扫描的一个非常重要的前提。 4.向局部范围扫描引导的方法— 只使用索引的局部范围扫描 到目前为止,我们为了有效处理大范围数据而不断努力的主要原因:并不是因为扫描的索引中数据范围比较大,而是当要处理的数据范围比较大时,经过索引对表的随机读取会大大增加。 索引只是在查找第一个满足条件的索引行时发生随机读取,之后执行的是连续扫描,但是从表中读数据始终是按照随机方式进行的。 即使为查询条件中的所有列都创建了索引,优化器也不一定会制定只使用索引的执行计划。为了引导优化器,需要满足以下条件之一: SQL中涉及的列全部包含在一个组合索引中。 能够实现索引合并 能够实现索引连接 为引导优化器制定出只读取索引的执行计划,应当将候补列的选定方法视为一个非常重要的解决方案【再次强调:建立索引需慎重】。 执行SQL: Select ord_date,sum(qty) From order Where ord_data like ‘200510%’group by ord_date; 4.向局部范围扫描引导的方法— 灵活使用MIN,MAX局部范围扫描 MIN,MAX应用场景: 查询某个列的最大值,最小值; 流水号的生成; 解决办法: 额外创建一个只有一行数据的表,记录MAX的值,但是易出现事务瓶颈和锁; 使用SEQUENCE 4.向局部范围扫描引导的方法— 灵活使用MIN,MAX局部范围扫描 SEQUENCE从根本上讲与用户所创建的表不同,它在内存中由DBMS自动管理,并且不会发生锁的问题。 但实际情况下,SEQUENCE由很少被使用,原因如下: 当某个列作为有意义的候选键,在一定程度上排斥使用任意值,SEQUENCE将无法被使用; SEQUENCE会出现断

文档评论(0)

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

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

1亿VIP精品文档

相关文档