【问题标题】:Mongo DB update query performanceMongoDB更新查询性能
【发布时间】:2017-02-02 21:43:56
【问题描述】:

我想了解在 mongo db 中进行更新时,以下哪个查询会更快?我想一次更新几千条记录。

  1. 累积这些记录的对象 ID 并使用 $in 或使用批量更新触发它们?

  2. 使用集合中的一两个字段,这对于几千条记录是常见的 - 类似于 sql 中的“where”并使用这些字段触发更新。这些字段可能会或可能不会被索引。

我知道在第二种情况下查询会小得多,因为每个“_id”(oid)都没有累积。累积 _id 并使用它们来更新文档是否提供任何实际的性能优势?

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    累积 _id 并使用它们来更新文档是否提供任何实际的性能优势?

    是的,因为 MongoDB 肯定会使用 _id 索引 (idhack)。

    在第二种方法中 - 正如您所观察到的那样 - 您无法判断索引是否将用于某个字段。

    所以答案是:视情况而定。

    如果您的收藏有数百万或更多的文档,和/或搜索字段的数量很大,您应该首选第一种搜索方法。特别是如果 id 列表大小不小和/或 id 值相邻。

    如果您的收藏非常小,并且您可以容忍全扫描,您可能更喜欢第二种方法。

    无论如何,您都应该使用explain() 来证明这两种方法。

    【讨论】:

    • 感谢您的回答 Ori。第二种情况,如果搜索字段被索引,会不会比累积_ids并使用它更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2022-01-04
    • 1970-01-01
    • 2014-05-21
    • 2021-12-15
    相关资源
    最近更新 更多