【发布时间】:2014-01-03 17:28:25
【问题描述】:
php mongo 查询游标处理是否存在性能问题?
我的代码:
$cursor = $collection->find($searchCriteria)->limit($limit_rows);
// Sort ascending based on S_DTTM
$cursor->sort(array('S_DTTM' => 1 , 'SYMBOL' => 1 ));
// How many results found?
$num_docs = $cursor->count();
if( $num_docs > 0 )
{
// loop over the results
foreach ($cursor as $ticks)
{
查看类似代码
// request data
$result = $cursor->getNext();
我的问题是在第一个查询返回(满,限制为 100 行)之后,下一个查询继续循环。有数百万行返回,所以我想用“限制”来限制。
我确实做了重新索引以防万一,仍然没有区别。
我做错了什么? getNext 效果更好吗?
使用 mongod ver 2.5.4 和一周前下载的最新 php mongo 驱动程序。
集合大小为 100Gb,包括 2 个附加索引。
mongo 日志显示在不到 200 毫秒内执行的所有查询。
- 原来是查询问题而不是php mongo驱动问题..
【问题讨论】:
-
您确定限制应用正确吗?你有没有 var_dumped
$limit_rowsvar 以确保它实际上是有限的? -
还有“下一个查询”的条件是什么?
-
您的限制有多大?您在查询和/或排序依据的字段的集合上是否有索引?
-
我的限制是 100 默认值,我没有使用 getNext() 只是想确认它是我应该使用的..我确实在查找查询上有索引...没有确定排序是如何工作的.. .. 我正在测试搜索条件的数据负载是否为排序提取了大量数据,然后限制工作..
-
如果您运行此查询并使用 .explain(),输出是什么