【发布时间】:2023-03-31 19:30:02
【问题描述】:
当我们在游标上获取时,Postgres 中是否有与 Oracle LIMIT 子句内联的选项?
我正在使用可能包含数百万行的游标,这会降低游标性能。
我们是否可以选择限制每次提取的行数并分批完成提取?
【问题讨论】:
-
见这里Fetch
当我们在游标上获取时,Postgres 中是否有与 Oracle LIMIT 子句内联的选项?
我正在使用可能包含数百万行的游标,这会降低游标性能。
我们是否可以选择限制每次提取的行数并分批完成提取?
【问题讨论】:
是的,这就是光标默认的作用:
BEGIN; -- start a transaction
PREPARE c CURSOR FOR SELECT ...
FETCH 1000 FROM c;
FETCH 1000 FROM c;
...
COMMIT;
游标不会“保存”数据,它会在您运行 FETCH 时从表中获取它们。
【讨论】: