【问题标题】:Will adding more fields to the mongo query makes it faster or slower?向 mongo 查询添加更多字段会使其更快或更慢吗?
【发布时间】:2018-08-06 15:46:09
【问题描述】:

假设我有一个 mongodb 集合 books

[{book_id: 124, book_name: 'ABCD', language: 'English'}, {book_id: 185, book_name: 'EFGH', language: 'French'}, ...]

book_id 是独一无二的。因此,要检索特定书籍,只需 book_id 就足够了。 查询可能是

db.books.find({book_id: 124})

假设我也知道这本书是一本“英文”书。我可以查询到

db.books.find({book_id:124, language: 'English'})

向查询添加更多不必要的字段会使其更快或更慢吗?

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    直接的答案是添加更多字段肯定会降低查询速度。

    但是在您确切提到的情况下, book_id 是唯一的,并且您知道这本书是英文书,因此查询没有任何区别。

    book_id 是否被索引有什么关系?

    MongoDB 索引以线性方式工作: 假设 book_id 既不是索引也不是唯一的。在这种情况下,集合扫描将返回假设 100 个文档包含 book_id:124,然后在 100 个文档中查找有多少字段包含语言为英语。

    但如果 book_id 被索引,那么查询将使用索引扫描并直接返回 100 文档并查找语言为英语。

    如果 book_id 和 language 都是复合索引的一部分,在这种情况下,您的查询只会返回该特定文档。

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 2021-03-28
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多