データベースでクエリを最適化しようとしています。そのクエリは、次のようになります。Sql Join on User Defined関数:最適化する方法
select * from Account
inner join udf_Account('user') udfAccount
on Account.Id = udfAccount.AccountId
実は本当のクエリがはるかに長いですが、最も重要な点は、それが、内側には、ユーザIDに依存して、ユーザー定義関数(UDF)に参加し、いくつかが含まれていることです。 (これは、クエリ評価中に変化しない定数パラメータです)。
大量のデータのため、私のクエリは、本番データベースでは許容されない約20秒かかります。
私はすでに、一時テーブルに関数の結果を格納し、これらのテーブルをクエリに使用することで、クエリの期間が大幅に短縮されることを確認しました。
私は、次の質問をしています:
私は一時テーブルを避けることができます。関数には一度しか評価できないことをSQLに伝える方法ではありませんか?一時テーブルを使用すると、私のコードにいくつかの重要な変更があることを暗示しています。これは、別の解決策があれば、うれしいでしょう。
クエリを最適化する他の方法はありますか?
私の機能はすべて「インラインテーブル値」機能であると付け加えておきます。 – Thierry
私はMS SQL Server 2008を使用しています – Thierry