查询顺序是否影响复合索引的使用

时间:2014-07-08 12:12:29

标签: mongodb compound-index

MongoDB复合索引支持任何prefix of the index fields上的查询,但查询中的字段顺序是否必须与复合索引本身中的顺序匹配?

假设我们有以下索引:

{ "item": 1, "location": 1, "stock": 1 }

是否涵盖此查询:

{"location" : "Antarctica", "item" : "Hamster Wheel"}

1 个答案:

答案 0 :(得分:3)

是。索引创建中字段的顺序/顺序很重要。

在上面的示例中,所有过滤" item"的查询可以使用索引,但查询不使用"项"领域和使用" location"和/或" stock"因为你的过滤条件不会使用这个索引。

过滤器中字段的顺序"读取"查询无所谓。 MongoDB很聪明,知道

{"location" : "Antarctica", "item" : "Hamster Wheel"}

相同
{"item" : "Hamster Wheel", "location" : "Antarctica"}

正如其他人所指出的那样,确保查询使用索引的最佳方法是对查询运行解释http://bit.ly/1oE6zo1