gpt4 book ai didi

php - 如何使 PDO (pdo_pgsql) 延迟获取行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:43 26 4
gpt4 key购买 nike

使用以下代码,即使我获取了一行 - 整个数据集都已下载(这需要几秒钟):

$query = 'SELECT * FROM xxx WHERE id > :position ORDER BY id';
$stmt = $db->prepare($query);

$stmt->execute([
':position' => $position,
]);

while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
break;
}

我试图在 PDO 中找到一个选项,让它按需(或按合理的批处理)获取行,但没有找到,至少我在 PDO 文档中找不到它。

根据 EXPLAIN ANALYZE,给定查询的 Postgresql 能够在 0.28ms 内处理第一行。

我的目标是尽可能快地开始处理行,即使更多的行批处理会带来一些网络开销。

我如何确定它获取了所有行:

  1. 间接:在第一行之后break或遍历整个数据集花费相同的时间
  2. 我使用 tcpdump 捕获了流量并检查它是否提取了所有行。

因此,问题是:是否有可能使 PDO 按需模式逐行(或一些合理的小批量)获取?

最佳答案

我找到了答案:

$stmt = $db->prepare($query, [\PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL]);

因此必须使用 \PDO::CURSOR_SCROLL 选项创建语句

引用资料:

关于php - 如何使 PDO (pdo_pgsql) 延迟获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38192529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com