質問

2つの機能があります。 fn_without_paramfn_with_param

 CREATE FUNCTION [dbo].[fn_Without_Param]
 (
 )
 ...
 INNER JOIN .. ON .. AND SubmitDate = CONVERT( varchar(10), GETUTCDATE(), 101 )

/*
     I am requesting it so:
    declare @SubmitDate     datetime
    set @SubmitDate = CONVERT( varchar(10), GETUTCDATE(), 101 )
    select * from [dbo].[fn_With_Param] (@SubmitDate)
*/



CREATE FUNCTION [dbo].[fn_With_Param]
(
    @SubmitDate datetime    
)
...
INNER JOIN .. ON .. AND SubmitDate = @SubmitDate  

最初のケースでは、非決定的(?)関数(getutcdateのため)があり、同じ入力パラメーター(varchar(10)、getutcdate()、101) - 時間なしの日付、数分のMeensを持つ2番目の機能を呼び出しました、秒、ミリ秒)。私の関数は非決定的なものですか?これを検出する方法、おそらくSQL Serverにはパブリックマークがあります。なぜ2番目の関数が遅いのですか?

役に立ちましたか?

解決

フラグがあるかどうかはわかりませんが、で利用可能な参照があります http://msdn.microsoft.com/en-us/library/ms178091.aspx 内蔵機能は決定論的です。

getDate()およびgetUtcdate()は非決定論的です。なぜなら、同じパラメーターで複数回呼び出すと、この場合は異なる値が得られるためです。言い換えれば、返品値は入力によって決定されません。

2番目が最初のものよりも遅い理由に関しては、submitdate = @submitdate間の暗黙の変換を確認してください。彼らは両方とも日時ですか?

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top