【发布时间】:2020-05-07 19:28:47
【问题描述】:
PHP 内部函数pg_fetch_assoc()
使用迭代器/游标,还是一次性获取所有数据?
\PDO 会使用光标吗?
我的上下文正在获取大量数据,我想知道它是作为一个整体提取还是逐行提取(或者当游标包含完整数据集的子集时,是逐行限制)。
【问题讨论】:
-
我的经验是它会一次全部获取,因为如果我收到太多行,我会收到内存分配错误。但是,MySQL 和 ORA 版本的 fetch_assoc 从来没有给我内存分配错误。免责声明:我从 2009 年开始就没有使用过 PG 函数,所以现在的函数实现可能会有所不同。
-
re:您的编辑 - 在返回或传递时分配内存?
-
@treyBake 是从数据库服务器中提取整个数据集还是仅从光标中提取数据(我没有否决您的答案); (将措辞从“内存分配”更改为“全部或部分提取数据”);
-
@DanielW。我相信光标中的数据,因为我们将 $result 作为参数传递,而不是在函数中创建它:)
标签: php postgresql pdo iterator php-pgsql