1

是否可以在更改 Limit 和 offset 的值时循环 postgres。我想循环直到到达关系表的末尾。我想动态设置 Limit 和 offset 的原因是我的 1 GB 虚拟内存非常少,因此我的进程被杀死了。

目前我正在采取的方法是手动设置限制和偏移的值。

select *  from my_relational_table limit 1000 offset 0;
select *  from my_relational_table limit 1000 offset 1000;
select *  from my_relational_table limit 1000 offset 2000;

是否可以在 postgres 中自动化该过程,以便在到达关系表末尾时停止循环。

4

1 回答 1

2

对的,这是可能的。您可以使用游标和命令 FETCH。

例子:

postgres=# begin read only;
BEGIN
postgres=# declare xx cursor for select * from generate_series(1,100);
DECLARE CURSOR
postgres=# fetch 2 xx;
 generate_series 
-----------------
               1
               2
(2 rows)

postgres=# fetch 2 xx;
 generate_series 
-----------------
               3
               4
(2 rows)

postgres=# fetch 2 xx;
 generate_series 
-----------------
               5
               6
(2 rows)

postgres=# fetch 2 xx;
 generate_series 
-----------------
               7
               8
(2 rows)

postgres=# commit;
COMMIT
于 2013-05-20T04:31:34.090 回答