【问题标题】:How do MongoDB indices work?MongoDB 索引如何工作?
【发布时间】:2017-11-11 19:17:45
【问题描述】:

我听到并阅读了很多关于它们的相互矛盾的信息,我想澄清一下,因为我似乎无法通过 Google 查询来获得我正在寻找的答案:

  • 必须使用索引中的所有字段才能正确利用索引吗?
  • 如果查询中的字段未包含在索引中,Mongo 是否能够利用该索引?

【问题讨论】:

  • 1) 否,2) 是

标签: mongodb optimization indexing


【解决方案1】:

稍微扩展一下 Sergio 的 cmets:

必须使用索引中的所有字段才能正确利用索引吗?

没有。对于compound index,MongoDB 可以使用索引来支持对索引前缀的查​​询。

例如,假设有一个索引{ "a" : 1, "b" : 1 }。查询db.coll.find( { "a" : "something" } ) 可以使用此索引,因为a 是一个前缀,但如果查询b 上的过滤,则查询将无法使用该索引。

如果查询中的字段不包含在索引中,Mongo 是否能够利用索引?

是的。通常最好对查询中的所有字段进行索引,但查询仍然可以使用仅匹配字段子集的索引。

例如,假设查询是db.coll.find({ "a" : "foo", "b" : "bar" } )。此查询可以使用索引{ "a" : 1 }{ "b" : 1 },但{ "a" : 1, "b" : 1 }{ "b" : 1, "a" : 1 } 通常会更有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2013-06-20
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多