基本的な質問ですが...
フィルターを追加すると、テーブル スキャンのパフォーマンスが向上しますか?
たとえば、多くの NULL 値を持つ列を含むテーブルがあり、35 を超える値のみを探しているとします。
実行する方が速いですWHERE something IS NOT NULL AND something > 35
か、それともそのままにしておくべきですかWHERE something > 35
。
MS SQL Server 2005 を実行しています。
基本的な質問ですが...
フィルターを追加すると、テーブル スキャンのパフォーマンスが向上しますか?
たとえば、多くの NULL 値を持つ列を含むテーブルがあり、35 を超える値のみを探しているとします。
実行する方が速いですWHERE something IS NOT NULL AND something > 35
か、それともそのままにしておくべきですかWHERE something > 35
。
MS SQL Server 2005 を実行しています。
2 つの製剤は、機能的に同等です。
全テーブル スキャンを実行する場合、オーバーヘッドはページ キャッシュへのページのロードにあります。テストの実行は、コンピューティング作業の最小限の部分です。NULL が 2 回チェックされると、パフォーマンスの違いは計り知れない可能性があります。
次のいずれかを選択します。
where something > 35
と
where something > 35 and something is not null
クエリの表現力の問題です。where
私は明示的であることを好み、句に NULL チェックを入れます。ただし、どちらも同等です。