Sql server SQL Server多索引解决方案?

Sql server SQL Server多索引解决方案?,sql-server,indexing,composite-index,Sql Server,Indexing,Composite Index,假设我们有一个名为锦标赛的表,该表的列是Id、name、GameId、TypeId、cityId、Status和Format。除了Id和Name列,我想用这些列的所有组合搜索这个表,我的意思是我可以用GameId&Status或TypeId&CityId&Status或Status&Format搜索 正如您所看到的,所有搜索选项计数都等于 =C(5,1)+C(5,2)+C(5,3)+C(5,4)+C(5,5). 所以这里是我的问题,什么是最好的索引方案,为什么?我认为选择是 每列的索引。 所

假设我们有一个名为锦标赛的表,该表的列是Id、name、GameId、TypeId、cityId、Status和Format。除了Id和Name列,我想用这些列的所有组合搜索这个表,我的意思是我可以用GameId&Status或TypeId&CityId&Status或Status&Format搜索

正如您所看到的,所有搜索选项计数都等于

=C(5,1)+C(5,2)+C(5,3)+C(5,4)+C(5,5). 
所以这里是我的问题,什么是最好的索引方案,为什么?我认为选择是

每列的索引。 所有柱的复合ındex。
我知道复合索引确实比单一索引快,但是如果你按照正确的顺序,我的意思是如果我在[GameId,TypeId,CityId,Status,Format]列上有一个复合索引,并且像GameId=1&TypeId=2&CityId=3&Status=5&Format=6这样搜索,它会工作得很好,但是如果我搜索GameId=1&Format=6,我就无法意识到这个查询的速度有多快,据我所知,SQL Server复合索引只是一个b-树,复合索引的b-树键是从左到右排列的。

您打算使用什么作为聚集索引?如果您需要按每种可能的值组合进行搜索-您需要为每种可能的列组合创建一个索引-或者只需跳过即可索引,因为它们很可能无论如何都不会被使用。。。。。。。严肃地说:像这样的场景很少得到很好的处理。试着找出最常见的查询——占搜索总数80%的前三个查询——然后对它们进行索引以加速最常见的查询——忘记其余的我认为你是绝对正确的marc_s,谢谢你的回复。