mongodb 速度性能:$in vs $查找索引字段_id

nszi6y05  于 2023-02-08  发布在  Go
关注(0)|答案(1)|浏览(207)

假设:

  • 所有数据和索引都在RAM中。

第一次查询:

{
  $in: [user_id, array_of_user_ids_with_length_1000]
}

第二次查询:

{
  $lookup: {
    from: "col_b",
    localField: "_id", 
    foreignField: "user_id",
    as: "joined_field"
  }
}

where col_b has 10B documents and is indexed, uniquely, on "user_id".

我的理由是:
第二查询应该更快,因为第一查询中的$in操作将具有O(1000)的最坏情况时间复杂度,而第二查询的最坏情况时间复杂度是O(log(10B))= O(23)。
我的理由正确吗?第二个查询真的会比第一个查询快吗?如果不是,我错在哪里?在实践中,我们能期望这在真实数据、硬件、RAM、用例等方面都是如此吗?

km0tfn4u

km0tfn4u1#

$lookup用于连接来自其他集合的数据,$in用于在单个集合中查找相似的数据组,这完全取决于您的用例。

相关问题