关于使用复合索引的一般规则是什么?你应该什么时候使用它们,什么时候应该避免它们?
解决方法
仅选择几个字段的查询可以在索引上完全运行.例如,如果您有(OrderId)上的索引,则此查询将需要表查找:
select Status from Orders where OrderId = 42
但是,如果您在(OrderId,Status)上添加复合索引,则引擎可以从索引中检索所需的所有信息.
多列的排序可以从复合索引中受益.例如,(LastName,FirstName)上的索引将有益于此查询:
select * from Orders order by LastName,FirsName
有时你在多个列上有一个独特的警告.例如,您每天重新启动订单号码.那么OrderNumber不是唯一的,而是(OrderNumber,OrderDayOfYear)是.您可以使用唯一的组合索引来强制执行.
我确定复合索引有更多的用途,列举了一些例子.