【发布时间】:2011-02-01 16:25:21
【问题描述】:
是否可以循环查询,如果(例如)找到 500,000 行,它将返回前 10,000 行的结果,然后再次重新运行查询?
所以,我要做的是运行一个查询并构建一个数组,如下所示:
$result = pg_query("SELECT * FROM myTable");
$i = 0;
while($row = pg_fetch_array($result) ) {
$myArray[$i]['id'] = $row['id'];
$myArray[$i]['name'] = $row['name'];
$i++;
}
但是,我知道会有几十万行,所以我想分批做 10,000... 1- 9,999 然后 10,000 - 10,999 等等...原因是因为我不断得到这个错误:
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 3 bytes)
顺便说一句,我不明白 3 个字节是如何耗尽 512M 的……所以,如果我可以更改它,那就太好了,尽管分批执行此操作可能会更好?
【问题讨论】:
-
您没有足够的内存将所有结果在同一时刻(没有 CURSOR)放入数组中。但是,你想做什么?你想通过填充这个数组来解决什么问题。
标签: php postgresql memory loops