我已经阅读了 MongoDB in action book 中关于索引的章节,并且想知道是否有人可以扩展它所讨论的关于索引的内容。
如果我有一个涵盖的索引a,b,c,d,e
并且我使用该索引进行查询a,b,c
。如果我查询会发生什么a,c,e
?索引是仅用于查询a
还是在查询其他字段时使用?
在这种情况下,将索引也放在a,c,e
. 我问是因为我有一个前端部分链接到这些字段,用户可以在其中创建自由形式的查询(a,b,c,f
可能是一个)。我是否需要所有可能出现的选项的索引?
我已经阅读了 MongoDB in action book 中关于索引的章节,并且想知道是否有人可以扩展它所讨论的关于索引的内容。
如果我有一个涵盖的索引a,b,c,d,e
并且我使用该索引进行查询a,b,c
。如果我查询会发生什么a,c,e
?索引是仅用于查询a
还是在查询其他字段时使用?
在这种情况下,将索引也放在a,c,e
. 我问是因为我有一个前端部分链接到这些字段,用户可以在其中创建自由形式的查询(a,b,c,f
可能是一个)。我是否需要所有可能出现的选项的索引?
MongoDB 中的复合索引通过前缀方法工作。
因此,对于 and 的索引,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
使用索引完全是另一个问题。
我问是因为我有一个前端部分链接到这些字段,用户可以在其中创建自由形式的查询(a、b、c、f 可能是一个)。我是否需要所有可能出现的选项的索引?
嗯,如果a
总是定义第一个字段,那么可能不会(explain
在您的数据集上当然会更好),否则您可能需要一些组合,是的。