是否有任何方法修改以下UPDATE
語句,以便標量函數只被調用一次而不是兩次?避免在UPDATE語句中多次調用標量函數
UPDATE a
SET SomeField = b.SomeField
FROM TableA AS a
JOIN TableB b ON b.Link = a.Link
WHERE b.CostMin <= @Cost * dbo.OneScalarFunction(@CurrencyFrom, b.Currency)
AND b.CostMax >= @Cost * dbo.OneScalarFunction(@CurrencyFrom, b.Currency)
P.S.使用BETWEEN
運算符沒有幫助 - SQL Server無論如何都調用兩次標量函數。
謝謝。似乎沒有別的選擇,只能放棄標量函數來支持表值函數。 – 10p
@ 10p - 當應用於整個數據集時,* *的效率更高。 – MatBailie