Performance 使用PHP进行简单查询的mongo查询速度较慢

Performance 使用PHP进行简单查询的mongo查询速度较慢,performance,mongodb,Performance,Mongodb,我使用PHP执行一个非常简单的Mongo查询 我相信查询执行得非常快,因为当我在终端上运行它时,它几乎立即完成,当我执行explain()时,它显示它在1-2毫秒内执行 然而,当我去迭代游标并将内容放入数组时,它会减慢速度。bigtime只需1秒就可以迭代几个记录 它正在使用索引,索引将扫描的对象减少为返回的少数文档 我在这个数据库上运行了其他非常类似的查询,它们的完成速度快了1000倍 以下是解释()的结果: 如您所见,它正在使用“vsid”上的索引,该索引适合于此查询。这个收藏的规模不是很小

我使用PHP执行一个非常简单的Mongo查询

我相信查询执行得非常快,因为当我在终端上运行它时,它几乎立即完成,当我执行explain()时,它显示它在1-2毫秒内执行

然而,当我去迭代游标并将内容放入数组时,它会减慢速度。bigtime只需1秒就可以迭代几个记录

它正在使用索引,索引将扫描的对象减少为返回的少数文档

我在这个数据库上运行了其他非常类似的查询,它们的完成速度快了1000倍

以下是解释()的结果:

如您所见,它正在使用“vsid”上的索引,该索引适合于此查询。这个收藏的规模不是很小,但也不是很大(约250000张唱片)

当我执行查询时,我只是使用一个非常简单的迭代循环它,将其放入一个数组中:

foreach ($cursor as $obj) {
  $vhit[] = $obj;
}
执行每个迭代的实际时间是毫秒的几分之一。查询的执行时间最多为2毫秒。但是进入“foreach”循环的过程会导致1秒的延迟

有什么想法吗


编辑:服务器运行大约8G的RAM,但整个数据库只有745MB,因此它应该能够在RAM中容纳整个数据库。

您正在执行的查询是什么。。查询中有多少个结果?查询非常简单:$ary\u query=array(“vsid\u short”=>$vsid\u short,“vsid”=>$vsid);这个例子只带来7个结果。返回的文档有多大?我怀疑问题可能是将结果复制到数组的开销(如果您有很多文档,或者文档很大)。您的MongoDB是本地的还是通过网络连接的?每个文档大约1k。这些机器彼此都是本地的。你能试着迭代和打印mongoshell中某个字段的内容,看看是否也有同样的问题吗?弄清楚这是mongodb问题还是php驱动程序问题。
foreach ($cursor as $obj) {
  $vhit[] = $obj;
}