1. ホーム
  2. sql-server

[解決済み] なぜインデックス作成時にINCLUDE句を使うのか?

2022-03-21 02:35:54

質問

70-433試験の勉強をしていて、次の2つの方法のいずれかでカバーリング・インデックスを作成できることに気づきました。

CREATE INDEX idx1 ON MyTable (Col1, Col2, Col3)

-- OR --

CREATE INDEX idx1 ON MyTable (Col1) INCLUDE (Col2, Col3)

INCLUDE句は私にとって初めての経験です。 INCLUDE句を使用する理由と、INCLUDE句を使用してカバーリング・インデックスを作成するか、使用しないかを決定する際のガイドラインをお教えください。

どのように解決するのですか?

カラムが WHERE/JOIN/GROUP BY/ORDER BY のカラムリストのみである。 SELECT 節は INCLUDE .

INCLUDE 節は、インデックスツリーではなく最下位/リーフレベルでデータを追加します。 これは、ツリーの一部ではないので、インデックスをより小さくします。

INCLUDE columns はインデックスのキーカラムではないので、順序付けされない。 つまり、上で述べたように、述語やソートなどにはあまり使えないということです。しかし、それは かもしれない キーカラムから数行のルックアップが残っている場合、便利です。

MSDNに掲載された動作例