SQL Server 2005技术内幕:查询、调整和优化2——Bookmark Lookup

根据上篇知道非聚集索引不能覆盖表中所有的列。假设在非聚集索引关键字中有一个带有谓词的查询用来选择没有被索引覆盖的列。如果SQL Server在非聚集索引中进行查找,会丢掉一些必须的列。反之,如果在聚集索引中进行查找,会丢掉一些必须的列。反之,如果在聚集索引中进行扫描,则会获取所有的列。反之,如果在聚集索引中进行扫描,则会获取所有的列。但这要涉及表中的每一行,从而影响效率。例如下面这个查询。

 

select   [ orderId ] [ customerid ]   from   [ Orders ]   where   [ orderdate ]   =   ' 1998-02-26 '

 

  这个查询与之前阐述索引查找所有的查询一样,但这个查询选择了这样两列:OrderIdCustomerId。非聚集索引OrderDate只覆盖了OrderId列。

针对这个问题,SQL Server提供的解决方案。对于每一个从非聚集索引取回的行都可以查找聚集索引中剩余行的值(例如示例中的行CustomerId)。把这个操作称之为“bookmark lookup”。书签指向堆或聚集索引中的行。SQL Server严格地为非聚集索引中的每一行都存储了书签。这样,在基本表中就可以一直找到非聚集索引所对应的行。

Bookup lookup可以与堆一起使用,就像上面所提到的可以与聚集索引一起使用一样。在SQL Server 2000中,堆上的Bookmark lookup与聚集索引上的一样。在SQL Server 2005中,堆上的bookup lookup与聚集索引的一样。堆上的bookmark lookup继续使用嵌套循环连接,而是用RID looup运算符来代替聚集索引。RID lookup运算符包括堆bookmark lookup上的查找谓词,但堆不是索引,RID lookup也不是索引查找。

Bookmark lookup不是简单的运算符。假设非聚集索引关键字与聚集索引关键字不存在如何关联,每个Bookmark lookup执行随机的I/O操作到聚集索引或堆中。随机I/O的成本很高。当比较各种执行计划的替代品时,包括扫描、查找及带有bookmark lookup的查找,优化器必须确定在执行更多的顺序I/O时是否能话费更少的成本,并使用覆盖所有需求列的索引扫描来搜索更多的行;或执行更少的随机I/O并使用带有多个选择性的谓词和bookmark lookup的查找。因为随意I/O比顺序I/O要消耗更多的成本,所以聚集索引扫描比带有bookmark look索引查找更省事。

由此我们可以得出结论,在查询列表中的选择列,尽可能的是查找谓词中索引覆盖的列,这样可以直接返回结果,不需要bookmark lookup,避免了整体扫描聚集索引!

转载于:https://www.cnblogs.com/fengxiang/archive/2010/08/27/1810165.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文 高清 全 Microsoft SQL Server 2005技术内幕 系列之一 其他的几本,我都会全部上传,有需要的点击我的用户名查看我所有的资源会有你想要的其他三本。 编辑推荐 通过专家们架构级的洞察力来优化企业级数据库 以SQL Server顶尖专家的视角,带你深入到SQL Server 2005性能调优和优化的内部。该书包括指导性强的实践、实用的建议及丰富的示例代码,使你的查询语句效率更高,效果更好,以达到数据库性能的优化。 探索如何 通过系统监视器和DMVs,来创建基线和监控工作负荷: 通过设计、操纵和管理跟踪,孤立性能问题: 使用内置的默认值、黑匣子,以及常见的标准跟踪来审计用户的活动; 使用扫描及查找、连接、聚合、联合及并行来分析用户的查询; 使用缓存计划和新计划来产生高效率的查询和低代价的查询; 探测和解决加锁、阻塞及死锁等并发问题; 通过实践来诊断和排查反应时间、吞吐量,以及可扩展的问题。 内容简介 本书是Inside Microsoft SQL Server 2000的作者Kalen Delaney的又一经典著作,是Inside Microsoft SQL Server 2005系列四本著作中的一本。书中详细介绍了如何使数据查询更加高能高效,同时使现有资源最大化的方法。本书还包含了大量的代码示例和表示例以帮助数据库开发人员和管理员理解复杂的逻辑并掌握查询调整优化。通过阅读本书,数据库开发人员将能够加深对查询优化背景的理解和应用,并开发和调整优化出反应速度更快的数据库。   本书适合于专业数据库开发者、BI开发者、DBA和以SQL Server作为后台数据库的一般应用程序开发者,读者可以通过书中的最佳实践、高级技巧和代码示例来掌握查询调整优化的技巧,以针对不同问题开发出切合实际的高效能的方案。 作者简介 Kalen Delaney还是微软出版社Inside Microsoft SQL Server丛书的编辑,她从事SQL Server方面的工作已有20多年。在SQL Server社区,她是一位知名的专家。她于1995年被评为微软最有价值的专家(MVP)。   Kalen是SQL Server Magazine的特约编辑和专栏作家,她还写作了大量的 目录 序 致谢 引言 Microsoft SQL Server技术内幕丛书的历史 丛书结构 《Microsoft SQL Server 2005技术内幕:T-SQL查询》 《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》 《Microsoft SQL Server 2005技术内幕:存储引擎》 《Microsoft SQL Server 2005技术内幕查询调整优化》 例子和脚本 未被涵盖的主题 免责条款 如何获得支持 关联网站 微软学习站点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值