findOne多次与具有多个id的find()

时间:2015-02-19 05:58:44

标签: mongodb

我很好奇调用findOne()十次和使用十个参数调用find()之间的性能差异。后者足够好吗?

1 个答案:

答案 0 :(得分:1)

一般来说,在您的环境中使用您的数据进行测试是有意义的,但理论上的答案是:它取决于,但通常,是 - 它可以提高性能因为它减少往返次数到数据库,并且网络延迟通常是主导因素,除非您的查询效率非常低。这在生产中更为突出,并且具有多个数据中心,并且在localhost上的问题较少。

问题在于你的十个参数来自哪里 - 如果你想按id选择一组10个元素,$in-query更优雅,更快速。但是,您还可以在$or - 查询中使用十个不同的查询,并且仍然可以减少往返次数。但是,有一些pitfalls with $or and indexes that are described well in the documentation

减少往返次数的主题也被称为N+1 problem in the context of pseudo-joins,并且广泛的协议是减少往返次数是关键。