如何查看sqlserver执行计划来判断SQL语句效率!

山城忙碌人 2012-11-30 05:42:33
如题:当sql语句变化后,如何使用sqlserver 执行计划看SQL执行效率,应该看哪一个选项?
基本上每次执行后都有一个select 的选项,但看上面的io和cpu基本为0




上面四个为测试环境,正式环境更为复杂,如:


请问如何看这执行计划呢!


如果使用SET STATISTICS io ON指令测试
SET STATISTICS io ON
SET STATISTICS io off

测试环境数据上百万,我测试后看逻辑次数和表描述次数,我感觉也不准,测试效果如下:
select * from a where createtime>'2012-11-29'
这个SQL的逻辑次数为46408
select * from a where datediff(day,createtime,getdate())=0
而这个sql的逻辑次数为500多

明天datediff的效率比 createtime >''差,为什么效率好的逻辑次数却高了近倍呢?两个SQL分别测试时是新打开的查询分析器,请问这是什么原因呢?
...全文
12615 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010797331 2014-05-20
  • 打赏
  • 举报
回复
请问版主现在知道怎么看了吗?同问~~
bing86962067 2014-01-11
  • 打赏
  • 举报
回复
对sql server 的查询效率 一直很在意,很想知道它的本质,想知道数据库究竟是怎么查的,求大神指路啊!
zh89233 2013-11-07
  • 打赏
  • 举报
回复
引用 10 楼 bisubisu 的回复:
引用 9 楼 sunylf 的回复:
现在还能回此贴?
为啥不能回?
就是···
山城忙碌人 2013-08-16
  • 打赏
  • 举报
回复
引用 9 楼 sunylf 的回复:
现在还能回此贴?
为啥不能回?
sunylf 2013-08-14
  • 打赏
  • 举报
回复
现在还能回此贴?
發糞塗牆 2013-08-12
  • 打赏
  • 举报
回复
引用 4 楼 xhk24 的回复:
引用 1 楼 DBA_Huangzj 的回复:
对于执行计划,特别是2008,先看看有没有丢失索引。然后看执行计划里面的图标,哪个的百分比是最大的。重点优化那个。还要看有没有表扫描、聚集索引扫描等。执行计划是一本书才勉强说得完的东西。
那有没有相关的书籍
http://www.red-gate.com/community/books/sql-server-execution-plans
發糞塗牆 2013-08-12
  • 打赏
  • 举报
回复
引用 7 楼 SmithLiu328 的回复:
引用 6 楼 DBA_Huangzj 的回复:
引用 4 楼 xhk24 的回复:
[quote=引用 1 楼 DBA_Huangzj 的回复:] 对于执行计划,特别是2008,先看看有没有丢失索引。然后看执行计划里面的图标,哪个的百分比是最大的。重点优化那个。还要看有没有表扫描、聚集索引扫描等。执行计划是一本书才勉强说得完的东西。
那有没有相关的书籍
http://www.red-gate.com/community/books/sql-server-execution-plans
这本书讲的很详细,不过很多新的操作步骤没有提到。[/quote]没有知识是可以一本书就能说完的
KevinLiu 2013-08-12
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
引用 4 楼 xhk24 的回复:
引用 1 楼 DBA_Huangzj 的回复:
对于执行计划,特别是2008,先看看有没有丢失索引。然后看执行计划里面的图标,哪个的百分比是最大的。重点优化那个。还要看有没有表扫描、聚集索引扫描等。执行计划是一本书才勉强说得完的东西。
那有没有相关的书籍
http://www.red-gate.com/community/books/sql-server-execution-plans
这本书讲的很详细,不过很多新的操作步骤没有提到。
Shawn 2013-08-10
  • 打赏
  • 举报
回复
#1.从上往下,从右往左看 #2.不用“感觉”,它是准的,很可能是楼主没明白整个执行计划的意思 #3.想看明白,首先要知道2点:1.JOIN的三种连接方式:Loop,Merge,Hash连接;2.什么是SEEK,什么是SCAN,以及索引是如何被利用的。 推荐书籍:SQL SERVER 2005技术内幕-存储引擎,相关章节
Mr_XHK 2013-08-10
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
对于执行计划,特别是2008,先看看有没有丢失索引。然后看执行计划里面的图标,哪个的百分比是最大的。重点优化那个。还要看有没有表扫描、聚集索引扫描等。执行计划是一本书才勉强说得完的东西。
那有没有相关的书籍
专注or全面 2012-12-02
  • 打赏
  • 举报
回复
别光看逻辑读了 有没有清理缓存呢? dbcc dropcleanbuffers
  • 打赏
  • 举报
回复
通过对执行计划的跟踪,确定逻辑读最多最乱的,从索引入手解决。 再次跟踪,发现其在执行过程中占用资源最大的百分比,然后分析表的连接。 关于SQL SERVER优化,是个长期学习的过程,基本的优化含有了索引等内容,但深入优化就需要掌握更多的存储引擎方面的知识了。建议学习官方书籍《SQL SERVER2008存储引擎》
發糞塗牆 2012-11-30
  • 打赏
  • 举报
回复
对于执行计划,特别是2008,先看看有没有丢失索引。然后看执行计划里面的图标,哪个的百分比是最大的。重点优化那个。还要看有没有表扫描、聚集索引扫描等。执行计划是一本书才勉强说得完的东西。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧