3

我已经阅读了 MongoDB in action book 中关于索引的章节,并且想知道是否有人可以扩展它所讨论的关于索引的内容。

如果我有一个涵盖的索引a,b,c,d,e并且我使用该索引进行查询a,b,c。如果我查询会发生什么a,c,e?索引是仅用于查询a还是在查询其他字段时使用?

在这种情况下,将索引也放在a,c,e. 我问是因为我有一个前端部分链接到这些字段,用户可以在其中创建自由形式的查询(a,b,c,f可能是一个)。我是否需要所有可能出现的选项的索引?

4

1 回答 1

5

MongoDB 中的复合索引通过前缀方法工作。

因此,对于 and 的索引,a,b,c,d,e aa,b被视为前缀(http://docs.mongodb.org/manual/core/indexes/#id5),因此对两者进行查询a,b,c并且a,c,e应该产生索引使用;至于是否高效地a,c,e使用索引完全是另一个问题。

我问是因为我有一个前端部分链接到这些字段,用户可以在其中创建自由形式的查询(a、b、c、f 可能是一个)。我是否需要所有可能出现的选项的索引?

嗯,如果a总是定义第一个字段,那么可能不会(explain在您的数据集上当然会更好),否则您可能需要一些组合,是的。

于 2013-03-02T18:31:48.437 回答