我想了解哪些下面的查询在mongo db中进行更新时会更快?我想一次更新几千条记录。
累积这些记录的对象ID并使用$ in或使用批量更新来触发它们?
在集合中使用一个或两个字段,这些字段对于那几千个记录来说很常见 - 类似于"其中"在sql中并使用这些字段触发更新。这些字段可能会也可能不会被编入索引。
我知道在第二种情况下查询将会小得多,因为每一个" _id" (oid)没有积累。累积_ids并使用它们更新文档是否具有任何实际的性能优势?
答案 0 :(得分:1)
累积_ids并使用它们来更新文档是否具有任何实际的性能优势?
是的,因为MongoDB肯定会使用_id索引(idhack
)。
在第二种方法中 - 正如您所观察到的 - 您无法判断索引是否将用于某个字段。
所以答案是:它取决于。
如果您的馆藏有数百万或更多的文件,和/或搜索字段的数量非常大,您应该更喜欢第一种搜索方法。特别是如果id列表大小不小和/或id值相邻。
如果您的收藏非常小并且您可以容忍完整扫描,那么您可能更喜欢第二种方法。
无论如何,您应该使用explain()
证明这两种方法。