如何在执行结束之前逐步打印SQL查询结果?

时间:2019-04-18 14:01:43

标签: php sql postgresql pagination

我正在做一个很大的Postgres查询。尽管等待查询结束以回显所有结果,但是否可以逐步回显结果?

我的代码:

$sql1 = pg_query("select zhu_gid from indicateurs.note where zhu_gid not in (select gid from public.zh);");

while($data = pg_fetch_array($sql1))
   {
   echo $data['zhu_gid']."/";
   }

1 个答案:

答案 0 :(得分:1)

关于您的问题:否。 Postgres本身首先构建结果集,然后返回给客户端。

您可以为此使用cursor(仍然必须首先成功执行查询)。或多个查询,使用LIMIT / OFFSET或(最好)确定性WHERE条件对结果进行分区。您需要为它们添加确定性ORDER BY。但是所有这些分页解决方案都有其特定的困难。相关:

此外,我不会使用NOT IN。参见:

请考虑:

SELECT n.zhu_gid
FROM   indicateurs.note n
LEFT   JOIN public.zh ON zh.gid = n.zhu_gid
WHERE  zh.gid IS NULL;