只选择少数字段的查询可以完全在索引上运行.例如,如果您在(OrderId)上有索引,则此查询将需要表查找:
select Status from Orders where OrderId = 42
Run Code Online (Sandbox Code Playgroud)
但是如果在(OrderId,Status)上添加复合索引,引擎可以从索引中检索所需的所有信息.
多列上的排序可以从复合索引中受益.例如,(LastName,FirstName)上的索引将使此查询受益:
select * from Orders order by LastName, FirsName
Run Code Online (Sandbox Code Playgroud)
有时,您在多列上有一个唯一的constrant.例如,您每天都要重新启动订单号.那么OrderNumber不是唯一的,但是(OrderNumber,OrderDayOfYear)是.您可以使用唯一的复合索引强制执行该操作.
我确信复合索引有更多用途,只列出几个例子.