将SQL用户定义函数替换为Set操作以更新

时间:2016-09-27 22:45:22

标签: sql user-defined-functions sqlperformance

我有一个表格, TestTable ,其中包含列StartDate,1stDeliveryDate,DeliveryFrequency,HolidayCalenderId(链接到其他表日历)。 现在我必须添加一个FinalDeliveryDate列,它需要使用上面提到的其他字段进行一些计算。我已经设法编写了一个函数来执行计算并更新字段。要更新的最终查询类似于

Update  TestTable 
    Set FinalDeliveryDate = dbo.GetCalculatedFinalDeliveryDate(StartDate, 1stDeliveryDate, HolidayCalenderId)
WHere dbo.GetCalculatedFinalDeliveryDate(StartDate, 1stDeliveryDate, HolidayCalenderId) >= GETDATE

上面的这个例子只是为了解释如何使用该函数的场景。现在,随着业务的增长, TestTable 的规模正在迅速增加。我担心性能,因为查询需要经常运行并且在测试表中的所有行上运行。只是为了澄清,我是一名开发人员而不是DBA,但在研究了函数后,我知道最好在Select和Where子句中避免使用它们。如果可能,有人可以指出我正确的方向,如何删除此功能并执行设置操作来更新行..我无法想到任何其他方式替换这个功能..

0 个答案:

没有答案