- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server中中的的执执行行引引擎擎入入门门 图图解解
当查询优化器(Q ue ry O pt imize r)将T -SQ L语句解析后并从执行计划中选择最低消耗的执行计划后 具体的执行就会交由执行引擎(Execut io n Engine)来进行执行
本文旨在分类讲述执行计划中每一种操作的相关信息。
数数据据访访问问操操作作
首先最基本的操作就是访问数据。这既可以通过直接访问表 也可以通过访问索引来进行。表内数据的组织方式分为堆(Heap)和B树 其中表中没有建立聚集索引时数据是通过
堆进行组织的 这个是无序的 表中建立聚集索引后和非聚集索引的数据都是以B树方式进行组织 这种方式数据是有序存储的。通常来说 非聚集索引仅仅包含整个表的部分列
对于过滤索引 还仅仅包含部分行。
除去数据的组织方式不同外 访问数据也分为两种方式 扫描(Scan)和查找(See k),扫描是扫描整个结构的所有数据 而查找只是查找整个结构中的部分数据。因此可以看出
由于堆是无序的 所以不可能在堆上面进行查找(See k)操作,而相对于B树的有序 使得在B树中进行查找成为可能。当针对一个以堆组织的表进行数据访问时 就会进行堆扫描,如
图1所示。
图1.表扫描
可以看出 表扫描的图标很清晰的表明表扫描的性质 在一个无序组织表中从头到尾扫描一遍。
而对于B树结构的聚集索引和非聚集索引 同样可以进行扫描 通常来讲 为了获取索引表中的所有数据或是获得索引行树占了数据大多数使得扫描的成本小于查找时 会进行
聚集索引扫描。如图 所示。
图 .聚集索引扫描
聚集索引扫描的图标也同样能够清晰的表明聚集索引扫描的性质 找到最左边的叶子节点后 依次扫描所有叶子节点,达到扫描整个结构的作用。当然对于非聚集索引也是同样的
概念 如图3所示。
图3 .非聚集索引的扫描
而对于仅仅选择B树结构中的部分数据 索引查找(See k)使得B树变得有意义。根据所查找的关键值 可以使得从仅仅从B树根部向下走单一路径 因此免去了扫描不必要页的消
耗 图4是查询计划中的一个索引查找。
图4 .聚集索引查找
索引查找的图标也是很传神的 可以看到图标那根线从根节点一路向下到叶子节点。也就是找到所求数据所在的页 不难看出 如果我们需要查找多条数据且分散在不同的页
中 这个查找操作需要重复执行很多回 当这个次数大到一定程度时 SQ L Se rve r会选择消耗比较低的索引扫描而不是再去重复索引查找。对于非聚集索引查找 概念是一样的
就不再上图片了。
书书签签查查找找(Boo kmark Loo kup)
你也许会想 假如非聚集索引可以快速的找到所求的数据 但遗憾的是 非聚集索引却不包含所有所求列时该怎么办?这时SQ L Se rve r会面临两个选择 直接访问基本表去获
取数据或是在非聚集索引中找到数据后 再去基本表获得非聚集索引没有覆盖到的所求列。这个选择取决于所估计的行数等统计信息。查询分析器会选择消耗比较少的那个。
一个简单的书签查找如图5所示。
图5.一个简单的书签查找
从图5可以看出 首先通过非聚集索引找到所求的行 但这个索引并不包含所有的列 因此还要额外去基本表中找到这些列 因此要进行键查找 如果基本表是以堆进行组织
的 那么这个键查找(Key Loo kup)就会变成RID查找(RID Loo kup),键查找和RID查找统称为书签查找。
不过有时候索引查找所返回的行数过多导致书签查找的性能远不如直接进行扫描操作 因此SQ L Se rve r这时会选择扫描而不是书签查找。如图6所示。
图6 .St at e ProvinceID列有非聚集索引 但由于返回行数过多 分析器会选择扫描而不是书签查找
这个估计是根据统计信息进行的 关于统计信息 可以看我之前的一篇博文:浅谈SQ L Se rve r中统计对于查询的影响
聚合操作(A ggregat io n)
聚合函数会导致聚合操作。聚合函数是将一个集合的数据按照某种规则汇总成1个数据 或基于分组按照规则汇总成多个数据的过程。一些聚合函数比如:avg,sum,min
您可能关注的文档
最近下载
- 《客户服务与管理》教案 第5课 学会使用即时通信工具.pdf VIP
- 民爆信息系统网路服务平台.pptx VIP
- 《QCNPC41-2001-防喷器判废技术条件》.pdf VIP
- 《客户服务与管理》(李清文)718-1教案 第2课 熟悉客户服务人员的综合素质要求.docx VIP
- 《客户服务与管理》(李清文)718-1教案 第3课 学会使用电话服务工具.docx VIP
- 3《峨日朵雪峰之侧》同步练习(含答案)统编版高中语文必修上册.docx VIP
- 第2课 让美德照亮幸福人生.pptx VIP
- 《峨日朵雪峰之侧》同步练习 统编版高中语文必修上册.docx VIP
- 海马普力马PREEMA 1.8L、1.6升 电路图07-发动机和变速箱控制.pdf VIP
- 《客户服务与管理》教案 第1课 初识客户服务与管理.docx
文档评论(0)