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

SELECT SUM(XXXX) FROM XXX GROUP BY 统计一百万行,用时1分多,请帮忙分析。
本帖最后由 MoreQuestion 于 2013-02-03 19:17:09 编辑
dbo.UDF_UserBack 这个是用户定义函数,做加减乘除的,很简单的。

SELECT UA, SUM(dbo.UDF_UserBack(OrderAmount,0, UB,UB1,UB2,UB3,UB4,UB5,UB6,7)) AS RUB,SUM(dbo.UDF_UserBack(OrderAmount,0, UB,UB1,UB2,UB3,UB4,UB5,UB6,6)) AS RUB6 FROM XOrder GROUP BY UA;

以下是执行计划



------解决方案--------------------
干嘛不在写入数据的时候就算好呢?
直接取结果就是了
------解决方案--------------------
去掉函数,7个if用case when代替

sql server的函数已经是性能的杀手,而且一旦出现性能问题没法优化,函数必须慎用