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

像我这样的SQL该如何优化呢?
SELECT SUM(Amount) AS SumAmount, SUM(( Amount * (UX/100) )) AS RUX, SUM(( (Amount * (UX6/100)) -  ( Amount * (UX/100) ) )) RUX6 FROM Order;

像SUM这种计算还有7个列~10个列。

如果能加速呢?

如果每一个都计算好,放到另一个表,我的业务流又是很麻烦的了,要一条一条拿出来计算。现在只能在SQL进行计算。但是速度不怎么好。像这样,有什么办法优化呢?

------解决方案--------------------
你这个慢应该不是在多少列上面,而是缺少where条件和group by条件,导致全表运算,当表数据很大的时候,自然速度就低,一般对聚合函数的优化建议是在对应的列上加索引,如果有group by,group by用到的列也加索引。

如果不是经常要运算的数据,比如你每天才汇总一次,那么完全可以在每天晚上0点再执行,然后存到一个表中供明天使用。

另外,一般的性能优化着手点是执行计划,所以如果你觉得慢,最好提供你的执行计划看看