次のようなクエリがあります。
SELECT someString FROM
(
SELECT someString FROM someTable
WHERE someField = 1
) X
WHERE dbo.fnMyClrScalarFunction(X.someString) = 0
問題は、クエリ オプティマイザーが UDF をサブクエリ内に移動し、かなり制限的な 'someField = 1' 条件の前に適用されることです。残念ながら、UDF は正確には高速ではなく、パフォーマンスが大幅に低下します。これを防ぐ方法はありますか(一時テーブルを使用する以外に)、またはUDFが高価であることをSQLサーバーに確立する方法はありますか?
前もって感謝します