4
與this question相關,我決定檢查我的數據倉庫中的UDF(這在很大程度上應該是確定性的),並且我發現了幾個不適合的UDF。用戶定義的函數SQL Server 2005被錯誤地標記爲非確定性?
例如:
CREATE FUNCTION [udf_YearFromDataDtID]
(
@DATA_DT_ID int
)
RETURNS int
AS
BEGIN
RETURN @DATA_DT_ID/10000
END
在此查詢顯示出來:
SELECT ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE IS_DETERMINISTIC = 'NO'
AND ROUTINE_TYPE = 'FUNCTION'
ORDER BY ROUTINE_NAME
這是爲什麼?
無論您做什麼,在查詢中使用UDF都會帶來巨大的性能提升。如果你接受了所有的查詢,並用函數中的sql替換了UDF調用的所有實例,那麼你可以看到幾個幅度差別的順序。它使重複的SQL,但它可以真正幫助。 – 2008-11-21 21:50:32