SQL Server を使用していますが、クエリのパフォーマンスをテストするのに十分なデータセットがありません。
クエリを分析して、インデックスが使用されているかどうかを確認したい。どうすればそれを確認できますか
SQL Server を使用していますが、クエリのパフォーマンスをテストするのに十分なデータセットがありません。
クエリを分析して、インデックスが使用されているかどうかを確認したい。どうすればそれを確認できますか
これは実際には見た目よりも困難です。通常の最新のDBMS(およびMS SQL Serverも例外ではありません)は、インデックスが使用可能な場合でも、少量のデータで高速になる可能性があるため、全表スキャンを実行することがあります。1
例:
このSQLFiddleの例の最後のステートメントは、インデックスで満たすことができますが、クエリプランはテーブルスキャンを明確に示しています。
ただし、データを挿入すると、インデックスが使用されます。
さらに、DBMSが下す決定は、統計がどれだけ新鮮で正確であるかによって影響を受ける可能性があります。
インデックスが使用されているかどうかの最も信頼できるテストは、データベースに代表的な量のデータを入力してから、実行プランを確認することです。そして、あなたがそれにいる間、クエリの実際の実行の時間を計ることを忘れないでください!
1簡単な例:テーブル全体が単一のデータベースページに収まる場合、インデックスを含むページの追加のI / Oを待つよりも、そのページをロードして順番に実行する方が高速です。
SQL Management Studio でクエリを入力し、Control-L (クエリ実行プランを表示) を押します。そこで、インデックスが使用されているかどうかを確認できます。「テーブルスキャン」は、インデックスが使用されていないことを意味します。「インデックス スキャン」は、インデックスが使用されることを意味します。