mssql 根据执行计划细节作优化操做

示例:算法

一、若是select * 一般状况下汇集索引会比非汇集索引更优。sql

二、若是出现Nested Loops,须要查下是否须要汇集索引,非汇集索引是否能够包含全部须要的列。oop

三、Hash Match链接操做更适合于须要作Hashing算法集合很小的链接。性能

四、Merge Join时须要检查下原有的集合是否已经有排序,若是没有排序,使用索引可否解决。优化

五、出现表扫描,汇集索引扫描,非汇集索引扫描时,考虑语句是否能够加where限制,select * 是否能够去除没必要要的列。线程

六、出现Rid查找时,是否能够加索引优化解决。排序

七、在计划中看到不是你想要的索引时,看可否在语句中强制使用你想用的索引解决问题,强制使用索引的办法Select CluName1,CluName2 from Table with(index=IndexName)。索引

八、看到不是你想要的链接算法时,尝试强制使用你想要的算法解决问题。强制使用链接算法的语句:select * from t1 left join t2 on t1.id=t2.id option(Hash/Loop/Merge Join)hash

九、看到不是你想要的聚合算法是,尝试强制使用你想要的聚合算法。强制使用聚合算法的语句示例:select  age ,count(age) as cnt from t1 group by age  option(order/hash group)it

十、看到不是你想要的解析执行顺序是,或这解析顺序耗时过大时,尝试强制使用你定的执行顺序。option(force order)

十一、看到有多个线程来合并执行你的sql语句而影响到性能时,尝试强制是不并行操做。option(maxdop 1)

十二、在存储过程当中,因为参数不一样致使执行计划不一样,也影响啦性能时尝试指定参数来优化。option(optiomize for(@name='zlh'))

1三、不操做多余的列,多余的行,不作务必要的聚合,排序。

相关文章
相关标签/搜索