クエリの種類とインデックス
列にインデックスを作成するかどうかを検討するときは、クエリでどのように列が使用されるかを評価します。次の表では、インデックスが役に立つクエリの種類を示します。
注 |
---|
表の例は、AdventureWorks2008R2 サンプル データベースに基づいています。SQL Server Management Studio で例を実行すると、実際の実行プランを表示することで、クエリ オプティマイザーによって選択されたインデックスを表示できます。詳細については、「実際の実行プランを表示する方法」を参照してください。 |
クエリの列述語 |
クエリの説明と例 |
検討するインデックス |
---|---|---|
特定の値との完全一致 |
特定の値を含む列エントリを指定する WHERE 句を使用するクエリで完全一致を検索します。次に例を示します。
|
BusinessEntityID 列に非クラスター化インデックスまたはクラスター化インデックス。 |
IN (x,y,z) リスト内の値との完全一致 |
指定した値リスト内の値の完全一致を検索します。次に例を示します。
|
BusinessEntityID 列に非クラスター化インデックスまたはクラスター化インデックス。 |
値の範囲 |
2 つの値の範囲内にある値を含むエントリを指定するクエリで値範囲を検索します。次に例を示します。
または
|
ProductModelID 列にクラスター化インデックスまたは非クラスター化インデックス。 |
表の結合 |
結合述語に基づき、他のテーブルの行に一致するテーブル内の行を検索します。次に例を示します。
|
ProductID 列と ProductAssemblyID 列に非クラスター化インデックスまたはクラスター化インデックス。 |
LIKE 比較 |
'abc%' など、特定の文字列で始まる行を検索します。次に例を示します。
|
Name 列に非クラスター化インデックスまたはクラスター化インデックス。 |
並べ替えまたは集計 |
暗黙の並べ替え順や明示的な並べ替え順、または集計 (GROUP BY) が必要です。次に例を示します。
|
並べ替える列または集計列に非クラスター化インデックスまたはクラスター化インデックス。 列の並べ替えでは、列の並べ替え順 (昇順または降順) を指定することを検討してください。 |
PRIMARY KEY 制約または UNIQUE 制約 |
挿入操作や更新操作で重複する新しいインデックス キー値を検索して、PRIMARY KEY 制約と UNIQUE 制約を設定します。次に例を示します。
|
制約で定義された列にクラスター化インデックスまたは非クラスター化インデックス。 |
PRIMARY KEY/FOREIGN KEY リレーションシップでの UPDATE 操作または DELETE 操作 |
CASCADE オプションの有無にかかわらず、PRIMARY KEY/FOREIGN KEY リレーションシップに列が参加している更新操作または削除操作で行を検索します。 |
外部キー列に非クラスター化インデックスまたはクラスター化インデックス。 |
選択リスト内にあり、述語にはない列 |
選択リスト内にある、検索や照合で使用されない 1 つ以上の列を返します。次に例を示します。
|
INCLUDE 句に FileName を指定して、非クラスター化インデックスを作成。 |