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的函数已经是性能的杀手,而且一旦出现性能问题没法优化,函数必须慎用