示例:算法
一、若是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三、不操做多余的列,多余的行,不作务必要的聚合,排序。