mssql sqlserver sql脚本中group by 运行效率差,速度慢的原因分析及优化方法分享


摘要:
下文记载一次group by 运行速度慢的分析及处理方法,如下所示:
实验环境:sql server 2008 R2

项目背景:
系统已经上线运行了整整十年了,最近新写了一个数据分组统计(group by)的sql脚本,发现速度运行的越来越慢,下文将可能导致group by慢的原因依次列出,并做出相应的处理:

原因1:分组字段上未建立合适的索引,此时我们可以采取缺失索引获取方法
原因2:分组字段存在多个,并且所属不同的数据表(由于分组字段分属不同的表,所以sql计算时会消耗更多的资源)
原因3:分组字段中加入了排序,导致索引失效
原因4:分组字段的数据类型是一些超级大的字段(text)
原因5:分组字段进行了相应的函数运算,导致索引失效

我们可以根据以上的原因对分组的sql脚本进行优化:
1.检查分组字段是否建立了合适的索引
2.将查询结果集先操作后(group by where 等操作)过滤为最小化后,再做相应的关联其它表的操作
3.检查分组字段是否为导致索引失效,如导致索引失效,我们需想出相应的方法使其索引正常有效