我想减少以下查询的查询执行时间。 此查询大约需要1分20秒,大约2k条记录。
表中的记录数:1348474
通过查询查询处理的记录数:25000
返回的记录数:2152
SELECT Col1, Col2,
ISNULL(AVG(Col3),0) AS AvgCol,
ISNULL(MAX(Col3),0) AS MaxCol,
COUNT(*) AS Col5
FROM TableName WITH(NOLOCK)
GROUP BY Col1, Col2
ORDER BY Col1, MaxCol DESC
我尝试卸下AVG和MAX色谱柱,并将其降低至1秒。 是否有相同的优化解决方案? 除了主键之外,我没有其他索引。
更新
添加的索引: 位于PRIMARY-Col1上的非群集
非集群位于PRIMARY-Col2
位于PRIMARY-ID上的集群唯一主键
======
在此先感谢。.祝您编码愉快!
答案 0 :(得分:1)
对于此查询:
SELECT Col1, Col2,
COALESCE(AVG(Col3), 0) AS AvgCol,
COALESCE(MAX(Col3), 0) AS MaxCol,
COUNT(*) AS Col5
FROM TableName
GROUP BY Col1, Col2
ORDER BY Col1, MaxCol DESC;
我将从(Col1, Col2, Col3)
上的索引开始。
我不确定这是否有帮助。问题可能是订购结果的时间。