3
WHERE句の変数でnullチェックを行う方法は1回だけですか?
次のような大きなテーブルに対するクエリがあります。 declare @myIdParam int = 1 select * from myTable where (@myIdParam is null or myTable.Id = @myIdParam) where句には、このような同様の条件がいくつかあり、結合も多数ありますが、これは要約です。 事実上、@ myIdParamがnullの場合、このパラメーターを使用して結果を制限する必要はありません。 私はDBプロではありませんが、私のテストから、このNULLチェックはすべてのレコードに対して行われ、どのような方法でも最適化されていないようです。 nullチェックを削除し、パラメーターがnullではないと想定すると、クエリは即座に返されます。それ以外の場合は、最大10秒かかります。 これを最適化する方法があるので、チェックは実行時に一度だけ行われますか?
11
sql-server
null