何时使用复合索引?

时间:2009-06-01 06:55:45

标签: sql database

使用复合索引的一般规则是什么?你什么时候应该使用它们,什么时候应该避免使用它们?

2 个答案:

答案 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)是。您可以使用唯一的复合索引强制执行该操作。

我确信复合索引有更多用途,只列举几个例子。