当前位置: 首页 > 知识库问答 >
问题:

MongoDB:什么更快:单个find()查询还是多个find\u one()?

狄晟睿
2023-03-14

我有以下与MongoDB数据库设计相关的问题。这是我的情况:

  • 我收藏了大约50k份文件(每份15kB),
  • 每个文档都有一个存储数据样本的字典,
  • 我的查询总是从文档中获取所有数据,
  • 每个查询都使用一个索引,
  • html" target="_blank">集合只有一个索引(基于单个日期时间字段),
  • 在大多数情况下,我需要从许多文档中获取数据(通常为25

我有两种选择查询的可能性:

  • 执行单个查询检索我感兴趣的所有文档,
  • 执行N个查询,每个人都得到一个文档,通常为25个

所以问题是,当我在单个查询上执行许多小查询时,是否有额外的开销?在关系数据库中,进行许多查询是一种非常糟糕的做法——但在NoSQL中呢?我问的是一般做法——我应该避免那么多疑问吗?

在文档中,我读到查询的数量并不重要,但对文档的搜索数量很重要,这是真的吗?

感谢帮助;)

共有2个答案

柴声
2023-03-14

当您对一个查询执行小查询时,问题是网络开销,即网络延迟往返。

对于批次处理作业中的单个请求,它可能不多,但如果您发出多个类似的请求或在前端使用此技术,它会降低性能。

此外,您可能需要预处理数据,例如手动对其进行排序聚合。

蒋高杰
2023-03-14

有一个类似的问题,就像你问的那样:多次查询mongoDB可以吗

IMO,对于您的用例,即25

如果是单个查询:

  • 在单个线程中循环是不够的,您必须发出并行请求,这将产生额外的开销

正如上面的答案中所解释的,对于批处理多少值与往返次数似乎有一个最佳点,这也取决于您的文档类型。

更广泛地说,任何10

 类似资料:
  • 我正在使用mongoose来计算匹配某个查询的文档数量。此查询的索引为: Mongo版本为3.2,收藏文档数量约为175万。 需要2分多钟。但如果我这么做了: 然后大约需要2.5秒。 我做错什么了吗?我能做些什么来加快速度吗? 编辑:解释日志。 计数: 为了找到。

  • 问题内容: 我知道我们可以进行相关的子查询并加入。但是哪一个更快?有黄金法则还是我必须同时衡量这两者? 问题答案: 首先,相关子查询实际上是联接的一种。关于哪一个产生最佳执行计划没有黄金法则。如果您对性能感兴趣,则需要尝试不同的表格以查看最有效的方法。或者,至少,看看执行该决定的执行计划。 通常,出于两个原因,我倾向于避免关联子查询。首先,几乎总是可以在没有相关性的情况下编写它们。其次,许多查询引

  • 问题内容: 可以说我有一个图,想看看是否。哪个实施速度更快,为什么? 要么 显然,这过于简单了,但可以想象该图变得非常密集。 问题答案: 集合中的成员资格测试要快得多,尤其是对于大型集合。这是因为该集合使用哈希函数来映射到存储桶。由于Python实现会自动调整该哈希表的大小,因此无论集合的大小如何,速度都可以保持恒定()(假设哈希函数足够好)。 相反,要评估对象是否为列表的成员,Python必须比

  • 问题内容: 我正在使用MySQL存储视频游戏数据。我有用于标题,平台,标签,徽章,评论,开发人员,出版商等的表… 当某人正在观看游戏时,最好有一个查询来返回与游戏相关的所有数据,还是最好使用多个查询?直观地,由于我们具有评论,将它们包括在同一查询中似乎毫无意义,因为它们需要分页。但是在其他情况下,我不确定是否要分解查询或使用两个查询… 我有点担心性能,因为我现在加入游戏下表:开发人员,发行者,元标

  • 问题内容: 我希望使用find在rails控制器中编写此SQL查询: 我该怎么做?我正在使用Rails框架和MySQL。提前致谢。 问题答案: 简单方法: 一枪: