假设以下查询:
SELECT * FROM table;
DBMS会立即将其提供给第一行,否则它首先将所有行(将它们保存在某种缓冲区中),然后一次给我所有行?
如果我的问题不清楚假设表中的行数量使得DBMS将花费正好60分钟来获取所有行.数据库管理系统将逐渐返回60分钟的行,还是等待60分钟才能收到任何数据?
解决方法
在Postgresql中,如果查询执行计划允许,服务器将尽快将行返回给客户端.在您的简单示例中就是这种情况.在其他情况下,例如,如果您最终有排序,则必须等待完成.
但是,如果使用标准的libpq接口,则客户端库将在内存中建立整个结果,然后将其返回到客户端程序.要逐行获取结果,您需要在libpq中使用single-row mode.如果您使用其他界面或其他语言,结果可能会有所不同.