我已经阅读了 MongoDB in action book 中关于索引的章节,想知道是否有人可以扩展其中关于索引的内容。
如果我有一个涵盖 a,b,c,d,e
的索引,并且我在 a,b,c
上查询,则使用该索引。如果我查询 a,c,e
会怎样?索引是只用于查询a
还是用于查询其他字段?
在这种情况下,在 a,c,e
上也有索引是否更有意义。我问是因为我有一个前端链接到这些字段,用户可以在其中创建自由格式查询(a,b,c,f
可能是一个)。我是否需要所有可能通过的选项的索引?
最佳答案
MongoDB 中的复合索引通过前缀方法工作。
因此对于 a,b,c,d,e
的索引,a
和 a,b
将被视为前缀 ( http://docs.mongodb.org/manual/core/indexes/#id5 ) ,因此对 a,b,c
和 a,c,e
的查询应该产生索引用法;至于 a,c,e
是否高效地使用索引完全是另一个问题。
I ask because I have a front end piece that links to these fields where users can create a free form query (a,b,c,f could be one). Do I need an index for all possible options that could come through?
嗯,如果 a
始终是第一个定义的字段,那么可能不是(explain
当然在您的数据集上会更好),否则您可能需要一些组合,是的.
关于MongoDB 在多个字段上建立索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15177873/