问题描述
当我们对游标进行提取时,Postgres 中是否有与 Oracle LIMIT
子句内联的选项?
我使用的游标可能包含数百万行,这会降低游标性能。
我们是否可以选择限制每次获取的行数并分批完成获取?
解决方法
是的,这就是游标默认的作用:
BEGIN; -- start a transaction
PREPARE c CURSOR FOR SELECT ...
FETCH 1000 FROM c;
FETCH 1000 FROM c;
...
COMMIT;
游标不会“保存”数据,它会在您运行 FETCH
时从表中获取它们。