Tournament
という名前のテーブルがあり、このテーブルの列が であると仮定しましょうId, Name, GameId, TypeId, cityId, Status, Format
。Id
との列を除いName
て、これらの列のすべての組み合わせでこのテーブルを検索したいのですが、GameId & Status
orで検索できるということTypeId & CityId & Status
ですStatus & Format
。
ご覧のとおり、すべての検索オプションの数は次のとおりです。
=C(5,1)+C(5,2)+C(5,3)+C(5,4)+C(5,5).
これが私の質問です。インデックス作成の最適なシナリオとその理由は何ですか? 選択肢は、
- 各列のインデックス。
- すべての列の複合インデックス。
複合インデックスは単一インデックスよりも非常に高速であることは知っていますが、正しい順序で行えば、[GameId, TypeId, CityId, Status, Format]
列に複合インデックスがあり、検索GameId = 1 & TypeId = 2 & CityId = 3 & Status = 5 & Format = 6
がうまくいくように検索するとうまくいきますが、検索GameId = 1 & Format = 6
すると、このクエリがどのように機能するかわかりませんSQL Server複合インデックスは単なるbツリーであり、複合インデックスのbツリーキーは左から右の列に並べられていることがわかっているので、十分に高速です。