1

データベース内の複合インデックスについての理解の確認を探しています。特にSQLServer2008 R2に関連して、違いが生じる場合はそうです。

インデックスの列の順序が重要であると理解していると思います。インデックスが、の場合{ [Name], [Date] }、[日付]に基づくWHERE句に基づくSELECTはインデックスを使用できませんが、インデックスは使用できます。の{ [Date], [Name] }だろう。SELECTが両方の列に基づいている場合は、どちらかのインデックスを使用できます。

そうですか?{ [Date] }各列の2つのインデックス(つまり、、)に対して、このような複合インデックスを使用する利点は何ですか{ [Name] }

ありがとう!

4

2 に答える 2

3

それは正しいです。

複合インデックスは、複合列の選択性を組み合わせて結果セットを効果的に削除する場合に役立ちます。

'INCLUDED'列をインデックス(複合または非複合)に追加すると、1つまたは複数のクエリをカバーする'covering'インデックスを作成できます。これにより、取得するために2回目のルックアップを実行する必要がなくなるため望ましいです。それらの列(クラスター化インデックスから)。

2つの単一列インデックスまたは結合された列の複合インデックスの選択は、そのテーブルに対するクエリワークロードの合計によって決まります。

于 2011-01-12T12:23:54.073 に答える
3

完全ではありませんが、日付の選択でもインデックスを使用できますが、名前を含むクエリほど効果的ではなく、検索する必要のあるインデックスの量が制限されます。

名前+日付と日付、および名前を別々に検索することが多い場合は、コンボごとに1つずつ3つのインデックスを使用します。

また、インデックスの最初に最も多様なフィールドを持っていると、インデックスの検索範囲がより速く制限され、より速くなります。

インデックス付けされていないが、インデックスに基づいてフェッチされることが多い列、データを含めることもできます。

于 2011-01-12T12:24:47.303 に答える