zer*_*kms 5 php postgresql pdo
使用以下代码,即使我获取单行 - 下载整个数据集(需要几秒钟):
$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;
}
Run Code Online (Sandbox Code Playgroud)
我试图在PDO中找到一个选项,使其按需获取行(或通过合理的批次),但未能这样做,至少我在PDO文档中找不到它.
PostgreSQL的针对特定查询能够服务第一行中0.28ms按了EXPLAIN ANALYZE.
我的目标是尽可能快地开始处理行,即使进一步批量的行会带来一些网络开销.
我如何确定它获取所有行:
break在第一行之后需要相同的时间或迭代整个数据集tcpdump并检查它是否获取了所有行.所以,问题是:是否有可能PDO在需求模式下逐行(或一些合理的小批量)获取?
我找到了答案:
$stmt = $db->prepare($query, [\PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL]);
Run Code Online (Sandbox Code Playgroud)
\PDO::CURSOR_SCROLL因此必须使用选项创建该语句
参考:
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |