日期:2014-05-17  浏览次数:20563 次

sqlserver执行计划的问题
看到很多帖子说执行计划中的百分比大的步骤是需要优化的 

那么 执行计划的各个步骤的百分比加起来是否是100%?

如果是百分之百,那么这个步骤优化完了百分比降下去了 那么其余的步骤的百分比应该是会上去的吧?

我这么说 不知道各位大侠理解没有 求高手解答一下 小弟迷惑不解

------解决方案--------------------
各个步骤的百分比加起来是100%
其余的步骤的百分比应该是会上去的

如果把鼠标点在执行计划的某个运算符上,可以看到有个成本(cost)的值,百分比就是按这个值来算的
------解决方案--------------------
你有600块钱, 
你哥有100块钱,
你妹有300块钱。


三人总资产中,你就占了60%

你买瓶酱油花了500, 就还剰100块。  这时你占了20%, 你哥占20%,你妹占60%


------解决方案--------------------
如果1秒钟就查出了结果,管他谁占多大比例。
如果1分钟才查出了结果,就要看谁占比例多了,就优先考虑优化谁。
------解决方案--------------------
没错,整体的开销都是100%,各个步骤各占比例不同。优化的时候不光是看百分比的,看得是各步骤的开销,索引使用情况,以及语句逻辑等。
------解决方案--------------------
邹老大回复我的原话:
执行计划, 简单地说, 可以这样看的:
1. 看有没有缺失索引之类, 这个在 SQL 2005 及之后的版本很是一目了然
2. 看执行计划的资源开销最大的那些结点(同时也观察一下执行计划的复杂性), 太复杂的执行计划, 考虑先把开销比较大的部分拿出来单独查询, 分析这部分的执行计划;如果是简单的执行计划, 那就是评估这些结点在做什么, 通常考虑条件,输出列和输出记录数, 看这些部分有没有可以调整的地方, 比如说按照那个查询条件, 满足条件的记录数很少, 但执行计划显示记录数很多, 那么可能是统计信息没有更新,或者是准确性有问题, 考虑统计信息;或者说, 你看到的该结眯的条件中, 有转换数据类型这样的保长, 那可能是条件的数据类型定义有问题
3. 执行计划中关注一下有没有走索引, 如果走索引, 是 SEEK 的方式, 还是 SCAN 的方式, 如果没有走索引, 或者是走的 SCAN 方式, 那么应该分析看是否索引方面有待改进
4. 执行计划中关注一下, 有没有同一个对象出现在多个结点中, 结合你的查询语句, 如果查询中没有多次引用同一个对象, 但执行计划中反馈是多次引用, 那么需要看这些引用到底是做什么, 是否有可以合并的地方
5. 结合数据和查询, 判断一下执行计划中, 各个结点的优先顺序是否是合理的, 比如某个条件可以大量过滤数据, 是否执行计划中反而它被放到最后面才去执行


当然,自己参详,别过于完全接受