web-dev-qa-db-ja.com

SQL Serverのインデックスシークとインデックススキャン

MS SQLサーバーでのIndex ScanとIndex Seekの違いを、サンプル例を使用して説明してください。実際の使用方法を知っておくと役立ちます。前もって感謝します。

33
Ram

スキャンを使用したこのクエリのテキストshowplan(簡潔にするために少し編集されています)は次のとおりです。

|–Table Scan(OBJECT:([ORDERS]), WHERE:([ORDERKEY]=(2)))

次の図は、スキャンを示しています。

enter image description here

シークを使用した同じクエリのテキストshowplanは次のとおりです。

 |–Index Seek(OBJECT:([ORDERS].[OKEY_IDX]), SEEK:([ORDERKEY]=(2)) ORDERED FORWARD)

enter image description here

これを見てください SQL Serverプラン:インデックススキャン/インデックスシークの違い

42
Backtrack

簡単に言えば、インデックススキャンまたはテーブルスキャンは、SQL Serverが適切なレコードを見つけるためにデータまたはインデックスページをスキャンする必要がある場合です。スキャンはシークの反対です。シークはインデックスを使用して、クエリを満たすために必要なレコードを特定します。

あなたの質問は、すでにstackoverflowに投稿されている質問に似ています

#インデックススキャンvsインデックスシーク

以下のリンクから情報を入手することもできます

#インデックススキャンとインデックスシークの概要

6
mansi