2011-01-12 10 views
1

データベース内のコンポジットインデックス、特にSQL Server 2008 R2のコンポジットインデックスの違いを理解しているかどうかを確認しています。複合データベースのインデックス

インデックスの列の順序は、インデックスが{ [Name], [Date] }の場合、[日付]を基にしたWHERE句に基づくSELECTは使用できません。インデックスが、{ [Date], [Name] }のインデックスとなります。 SELECTが両方の列に基づいている場合は、いずれかの索引を使用できます。

そうですか?このような複合インデックスは、各列の2つのインデックス(つまり、{ [Date] }{ [Name] })にどのようなメリットがありますか。

ありがとうございます!

答えて

3

日付での選択でも引き続きインデックスを使用できますが、nameという名前を含むクエリほどインデックスの検索に制限があります。

名前+日付と名前のクエリを頻繁に使用する場合は、それぞれのコンボに対して3つのインデックスを使用します。

また、インデックスの中で最も多様なフィールドを最初に持つことは、インデックスの早いスピードを制限し、より速くすることができます。

インデックスには含まれていませんが、インデックスに基づいてフェッチされたデータを含めることもできます。

+0

ありがとうございました。 – Barguast

3

これは間違いありません。

コンポジットインデックスは、コンポジット列の組み合わせの選択性が効果的に結果セットをプルーニングする場合に便利です。

索引(複合または非複合)に 'INCLUDED'列を追加すると、「カバー」索引を作成して1つの照会(または複数の照会)をカバーすることができます。それらの列を(クラスタード・インデックスから)取得するための第2ルックアップ。

2つの単一列索引または結合列の複合索引の選択は、その表に対する問合せ作業負荷の合計によって決まります。

+0

お役立ち情報お返事をありがとうございます。 – Barguast

関連する問題