0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL ServerでのTable Scan,Index Scanの処理速度について

Posted at

SQL ServerにおけるTable Scan, Index Scan, Index Seekの速度の違いは、データへのアクセス方法に起因します。

Table Scanはテーブル全体を読み込むため最も遅く、Index Seekはインデックスを利用して必要なデータのみを読み込むため最も高速です。

Index Scanはインデックスをスキャンしますが、Table Scanよりは高速です。

Table Scan:

テーブルの全データを読み込むため、最も遅いアクセス方法です。
インデックスが利用できない場合や、テーブル全体を検索する場合に発生します。
データ量が増えるほど、読み込み時間も増加します。

Index Scan:

インデックスをスキャンしますが、Table Scanよりは高速です。
インデックスが利用できるものの、WHERE句でインデックス列全体を検索する場合などに発生します。
データ量が増えるほど、読み込み時間も増加します。

Index Seek:

インデックスを利用して、必要なデータのみを効率的に読み込むため、最も高速なアクセス方法です。
WHERE句でインデックス列を特定の値で検索する場合などに発生します。
データ量が増加しても、読み込み時間はほぼ一定です。

例:

例えば、UsersテーブルにUserIDとNameのインデックスがある場合、SELECT * FROM Users WHERE UserID = 100;というクエリは、Index Seekで高速に実行されます。

一方、SELECT * FROM Users WHERE Name LIKE '%田中%';というクエリは、インデックスが利用できるものの、中間一致検索のためIndex Scanで実行される可能性があります。
さらに、SELECT * FROM Users;というクエリは、Table Scanで実行される可能性が高いです。

まとめ:

Index Seek:最も高速。インデックスを利用して必要なデータのみを検索。
Index Scan:Index Seekよりは遅い。インデックスをスキャンする。
Table Scan:最も遅い。テーブル全体を検索。
クエリの実行計画を確認することで、どのアクセス方法が使用されているかを確認できます。Microsoft Learnでクエリの実行計画の表示方法を確認できます。

サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?