これは実際には見た目よりも難しいです。一般的な最新のDBMS(およびMS SQL Serverも例外ではありません)は、インデックスが使用可能な場合でも、少量のデータで高速になる可能性があるため、全表スキャンを実行することがあります。
例:
-
このSQLFiddleの例の最後のステートメント インデックスで満たすことができますが、クエリプランはテーブルスキャンを明確に示しています:
-
ただし、データを挿入 する場合 、インデックスが使用されます:
さらに、DBMSが下す決定は、統計 です。
インデックスが使用されているかどうかの最も信頼できるテストは、データベースに代表的な量のデータを入力することです。 そしてそして 実行計画 をご覧ください。 。そして、クエリの実際の実行の時間を計ることを忘れないでください!
簡単な例:テーブル全体が単一のデータベースページに収まる場合、インデックスを含むページの追加のI / Oを待つよりも、そのページをロードして順番に処理する方が高速です。>