代码之家  ›  专栏  ›  技术社区  ›  Alex

何时使用复合索引?

  •  13
  • Alex  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  8
  •   Andomar    16 年前

    只选择几个字段的查询可以完全在索引上运行。例如,如果(orderid)上有索引,则此查询将需要表查找:

    select Status from Orders where OrderId = 42
    

    但是,如果您在(orderid,status)上添加一个复合索引,引擎就可以从索引中检索到它所需要的所有信息。

    对多个列进行排序可以从复合索引中获益。例如,对(lastname,firstname)的索引将有益于此查询:

    select * from Orders order by LastName, FirsName
    

    有时在多个列上有一个唯一的常量。例如,每天重新启动订单号。那么orderNumber不是唯一的,但是(orderNumber,orderDayOfYear)是唯一的。您可以使用一个唯一的复合索引来实现这一点。

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

        2
  •  15
  •   Jose Basilio    16 年前

    当您的select查询经常使用这些列作为where子句中的条件时,复合索引非常有用。它提高了检索速度。如果不必要的话,你应该避开它们。

    这个 article 提供了一些非常好的信息。