首页 / MSSQL / 了解Sql Server的执行计划
了解Sql Server的执行计划
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了了解Sql Server的执行计划,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2579字,纯文字阅读大概需要4分钟。
内容图文
![了解Sql Server的执行计划](/upload/InfoBanner/zyjiaocheng/447/a550b7079293458cb1800477af0d8c8f.jpg)
执行查询,可以在结果栏中看到执行计划结果,如下图。
执行计划结果要看什么
执行计划结果出来了,那我们要怎么看呢?一般我们只需关注以下几个参数。
- 哪一步开销较高。开销较高的地方说明这个地方查询比较耗时。
- 哪些步骤所影响的数据行较多。这个可以通过连接线条的粗细来判断。
- 每一步做了些什么事情。
Sql Server的五种查询方式
要了解Sql Server的五种查询方式之前,我们要弄明白两个概念,Sql Server中的两种索引,聚集索引和非聚集索引。【聚集索引】直接决定了记录的存放位置,或者说,根据聚集索引可以直接获取到该记录,一般我们表的主键都是用聚集索引。【非聚集索引】则保存了二个信息,1.相应索引字段的值。2.记录对应聚集索引的位置(如果表没有聚集索引则保存记录指针)。因此,如果能通过聚集索引来查找记录,则速度是最快的。
下面是Sql Server查询数据的五种方式,这对我们理解执行计划非常重要。五种方式如下。
- 【Table Scan】:遍历整个表来查找匹配的数据行,速度最慢。
- 【Index Scan】:依据索引先从表中过滤出一部分记录,然后再查找所有匹配的数据行。查询速度比Table Scan稍快。
- 【Index Seek】:依据索引,定位记录的存放位置,然后再取得记录,因此,其查询速度比前面两种都快。
- 【Clustered Index Scan】:按聚集索引(一般是主键)遍历整个表,因为它的记录就是按聚集索引来顺序存放的。注意它与Table Scan的区别,其实它们都是进行全表扫描,只不过Table Scan是不带索引的扫描,而Clustered Index Scan是按聚集索引扫描的。
- 【Clustered Index Seek】:聚集索引获取记录,它是直接拿到那条记录,而没有进行全表扫描,因此它的查询速度是最快的。
当我们查看执行计划结果的时候,如果看到【Table Scan】,说明这个表没有建立任何索引,包括聚集索引。但往往看到更多的是【Clustered Index Scan】,表示该查询还是扫描了速个表,只不过是按聚集索引,实际效果还是和【Table Scan】没什么区别,因此,这时候我们可能要考虑建立‘组合字段索引‘。
查看更具体的执行过程
能过执行计划的结果图我们只能看出哪一块比较耗时,但是看不到Sql Server具体是怎么执行的。为了看得更明白,我们可以通过一条sql命令来查看,如下代码。
SET STATISTICS PROFILE ON;
执行结果除了返回数据集和执行计划外,还返回了一个表显示具体的执行过程,如下图。
这个结果我们重点要关注以下几点:
- Stmt Text:所执行的步骤详细描述,一般从最内层往外看。
- Rows:表示该执行步骤所产生的记录数。
- Executes:表示某执行步骤被执行的记录数。
参考资料
1,Fish Li的 看懂SqlServer查询计划
2,田园里的蟋蟀的 程序员眼中的 SQL Server-执行计划教会我如何创建索引?
了解Sql Server的执行计划
标签:
本文系统来源:http://www.cnblogs.com/mcgrady/p/4174185.html
内容总结
以上是互联网集市为您收集整理的了解Sql Server的执行计划全部内容,希望文章能够帮你解决了解Sql Server的执行计划所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。