使用复合索引的一般规则是什么?你什么时候应该使用它们,什么时候应该避免使用它们?
答案 0 :(得分:15)
当SELECT查询经常将这些列用作WHERE子句中的条件时,复合索引很有用。它提高了检索速度。如果没有必要,你应该避免使用它们。
这article提供了一些非常好的信息。
答案 1 :(得分:9)
只选择少数字段的查询可以完全在索引上运行。例如,如果您在(OrderId)上有索引,则此查询将需要表查找:
select Status from Orders where OrderId = 42
但是如果在(OrderId,Status)上添加复合索引,引擎可以从索引中检索所需的所有信息。
多列上的排序可以从复合索引中受益。例如,(LastName,FirstName)上的索引将使此查询受益:
select * from Orders order by LastName, FirsName
有时您在多个列上有一个唯一的constrant。例如,您每天都要重新启动订单号。那么OrderNumber不是唯一的,但是(OrderNumber,OrderDayOfYear)是。您可以使用唯一的复合索引强制执行该操作。
我确信复合索引有更多用途,只列举几个例子。