在 mongodb 中执行哪个查询更快:使用$in范围或一对$gte和$lte



我对性能问题很有趣。假设我有一个包含字段 ref(在每个文档中表示(的集合。我想要的是查找特定范围内的所有文档(例如,[1-1,000,000]。以下查询在数据库性能方面是否有任何区别

db.test.find({"ref": {"$gte":1, "$lte": 1000000}})db.test.find({"ref": {"$in": [1,2,3, ..., 1000000]}})

其他问题是关于内存消耗。如果我使用 pymongo 驱动程序,在这种情况下哪个查询更合适?

存在巨大的差异,因为范围查询将在内部转换为正则表达式查询,如果"ref"字段上有索引,则几乎可以立即评估覆盖的查询。

传递元素列表的查询有点繁重,因此通过网络发送它需要更多时间,之后 MongoDb 引擎将不得不评估每个数组元素与每个文档属性的比较。

相关内容

最新更新