内部の関数を使用するストアドプロシージャがあり、この関数では2つのパラメータが必要です。 私の問題は、今、私は私が代わりに私は機能にそれを取得するたびに呼び出しています方法の機能を呼び出すためにそれを使用することができ、一時テーブルを作成されて何をしたいのかストアドプロシージャ内で複数回ではなく集計関数を1回使用する
CASE
WHEN (DATEDIFF(MINUTE,dbo.FunctionName(DatetimeField, DatetimeID), dbo.FunctionName(DatetimeField, DatetimeID))/60.0) > 8 THEN
(DATEDIFF(MINUTE,dbo.FunctionName(DatetimeField, DatetimeID), dbo.FunctionName(DatetimeField, DatetimeID))/60.0)
Else 0
END
Else
0
END)
Else
(DATEDIFF(MINUTE,dbo.FunctionName(DatetimeField, DatetimeID), dbo.FunctionName(DatetimeField, DatetimeID))/60.0)-T.lunch
END
as 'Total'
下記参照パフォーマンスの問題に関連しています通過する数十万のレコードを持つこれらの行に 何か助けていただければ幸いです。
本当に助けが必要ですか?どのように[テーブルを作成する](http://msdn.microsoft.com/en-us/library/ms174979.aspx)?または[データの挿入](http://msdn.microsoft.com/en-us/library/ms174335.aspx)の方法を教えてください。または、クエリでそのテーブルを使用する方法は?あなたは何を試しましたか? –
おそらくパフォーマンス上の問題であるテーブルから関数名を選択している場合、 'FunctionName'関数は何をしていますか? – Magnus
ユーザー定義のスカラー関数は、本来、SQL Serverでは(2012年以前は)非効率的です。あなたのdbo.FunctionName()関数をポストすると、より効率的なテーブル値関数として書き直す方法を示すことができます。 – RBarryYoung