代码之家  ›  专栏  ›  技术社区  ›  Sreeragh A R

向mongo查询中添加更多字段会使其更快还是更慢?

  •  0
  • Sreeragh A R  · 技术社区  · 6 年前

    假设我有一个mongodb集合 .

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

    书号 这是独一无二的。所以要检索一本特定的书 书号 够了。 问题可能是

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

    假设我也知道这本书是一本“英语”书。我可以向

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

    向查询中添加更多不必要的字段会使查询更快还是更慢?

    1 回复  |  直到 6 年前
        1
  •  1
  •   user2414300    6 年前

    直截了当的答案是添加更多字段肯定会减慢查询速度。

    但在你的情况下,正如你所提到的,book_id是唯一的,你知道这本书是一本英语书,这与查询没有任何区别。

    这里的问题是图书id是否被索引?

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

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

    如果book_id和language都是复合索引的一部分,那么您的查询只返回特定的文档。