2012-02-23 3 views
5

に変換し、一度だけ行ごとまたはSQLの再evalulate機能していますか?は、一定

SELECT 
    * 
FROM 
    [dbo].Table S 
    INNER JOIN dbo.CYC_DT D ON 
     S.GL_DT = D.CYC_DT AND 
     D.CURR_CYC_IND = 'C' 


SELECT 
    * 
FROM 
    [dbo].Table S 
WHERE 

    S.GL_DT = dbo.GetCycleDate() 

私は機能を回避することがより安全である知っているが、テスト目的のために、私は別の日付に依存している他の人々によって行われ、試験に影響を与えることなく、ハードコーディングされた結果を返す機能リグにできるようにしたいですサイクルの日付表に設定します。他の誰かに影響を与えることなく、別の日付に切り替えることができるようにしたい。一般

答えて

2

オプティマイザは、スカラーのUDFが含まれる場合:あなたのスカラーUDF以来

http://blogs.msdn.com/b/dfurman/archive/2009/12/02/query-performance-scalar-udfs-and-predicate-pushdown.aspx

http://www.sql-server-performance.com/2005/sql-server-udfs/

を、それはあなたのために何ができるかで、より制限されているとして、これを行うには悪いアイデアパラメータ化されておらず、サンプルクエリがシンプルであれば、それを避けることができますが、確かめるためにはテストする必要があります。