4

この質問に関連して、データ ウェアハウスの 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

どうしてこれなの?

4

1 に答える 1

5

うーん-どうやら、それはパフォーマンスの問題を引き起こす可能性がある別の方法で指定するためにSCHEMABINDINGが必要です

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

これらを修正することで、パフォーマンスが向上する可能性があるようです。良い。

于 2008-11-21T17:13:44.010 に答える