我已经阅读了关于MongoDB行动手册中索引的章节,并且想知道是否有人可以扩展它关于索引的内容。
如果我有一个涵盖a,b,c,d,e
的索引,并且我在a,b,c
上查询,则使用索引。如果我在a,c,e
查询,会发生什么?索引是仅用于a
上的查询还是在查询其他字段时使用?
在这种情况下,在a,c,e
上建立索引更有意义。我问,因为我有一个前端部分链接到这些字段,用户可以创建一个自由格式查询(a,b,c,f
可以是一个)。我是否需要一个可能出现的所有可能选项的索引?
答案 0 :(得分:3)
MongoDB中的复合索引通过前缀方法工作。
因此,对于a,b,c,d,e
a
和a,b
的索引,将被视为前缀(http://docs.mongodb.org/manual/core/indexes/#id5),因此查询a,b,c
和{{1}应该产生索引用法;关于a,c,e
是否完全使用索引是完全另一个问题。
我问,因为我有一个前端部分链接到这些字段,用户可以创建一个自由格式查询(a,b,c,f可以是一个)。我是否需要一个可能出现的所有可能选项的索引?
如果a,c,e
始终是第一个字段定义,那么可能不是(a
在数据集上当然会更好),否则你可能需要一些组合,是的。