0

次の問題があります。

SQL Server 2005

  • 表: ドキュメント
  • 記録: 400'000
  • フィールド値はインデックスではありません
  • クエリ:

    SELECT * FROM Documents WHERE value = 0  
    

ケース A:

  • すべての 400'000 レコードの値 = NULL
  • パフォーマンス = X 秒

ケース B:

  • 200'000 レコードの値 = NULL
  • 200'000 レコードの値 <> NULL
  • パフォーマンス = X + Y 秒

ケース C:

  • 400'000 レコードの値 <> NULL
  • パフォーマンス = X + Y + Z 秒

これは一般的な動作ですか、それともパフォーマンスの程度の原因を別の場所で検索する必要がありますか?

4

1 に答える 1

1

valueほとんどの場合、列にインデックスがありません。この仮定を考えると、結果はそれほど驚くべきものではありません。 NULLは、数値比較を実行するよりもルックアップ (および拒否) が簡単な別のビットとして内部的に格納されます。

インデックスがあれば、私はこれらの結果に多少驚かれることでしょう。また、「X、Y、Z」の代わりに表示された正確な結果だけでなく、テーブルに関する正確な数値 (列幅) も投稿すると役立ちます。いつものように、パフォーマンスの問題をチェックするときは、クエリ プランを調べます

于 2013-07-10T20:34:19.217 に答える