sql >> データベース >  >> RDS >> Sqlserver

SQL Server で ISNULL() を使用しているときにパフォーマンスの問題はありますか?

    select 句の ISNULL() は、パフォーマンスにほとんど影響を与えません。一方、where 句では、オプティマイザがその列のインデックスを使用できなくなるため、パフォーマンスに非常に大きな影響を与える可能性があります。

    where isnull(col1, 0) = 0 -- unable to use index, because every 
                              -- row has to be evaluated
    
    where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0) 
                                   -- returns the same static value for every row and 
                                   -- not every row has to be evaluated by the function.
      

    そのため、where 句で isnull() を使用する場合は、クエリ オプティマイザーがインデックスを使用できないかどうかを評価します。その場合は、isnull(col1, 0) の場合の結果を使用して計算列を作成し、計算列にインデックスを付けて where 句で使用することを検討してください。



    1. T-SQLとは何ですか?

    2. $ _SESSION変数は、自動的にログインしたときに保存されません

    3. 少なくともパラメータ内で、見つからない場合でも行を返すSQLクエリ

    4. ローカルのMySQLデータベースを使用してAndroidアプリを構築するにはどうすればよいですか?