English 中文(简体)
用户定义函数 SQL Server 2005 错误标记为非确定性?
原标题:
  • 时间:2008-11-21 17:06:56
  •  标签:

这个问题相关,我决定检查我的数据仓库中的UDF(大部分应该是确定性的),但我发现有几个不是的,而本应该是确定性的。

例如:

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

为什么?

最佳回答

哎呀 - 显然,必须指定SCHEMABINDING,否则它可能会导致性能问题。

ALTER FUNCTION [udf_YearFromDataDtID]
(
    @DATA_DT_ID int
)
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
    RETURN @DATA_DT_ID / 10000
END

看起来我通过修复这些问题可以获得一些性能提升。不错。

问题回答

暂无回答




相关问题
热门标签