首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库中检索大量数据的游标的替代方案是什么?

问从数据库中检索大量数据的游标的替代方案是什么?
EN

Stack Overflow用户
提问于 2010-11-30 17:05:26
回答 6查看 2.3K关注 0票数 5

通过搜索stackoverflow,我发现了大量谴责在数据库编程中使用游标的答案。然而,我真的不明白另一种选择是什么。

出于性能原因,我正在创建一个程序,该程序从数据库中读取大量行(数十万行),并将它们保存在内存中。我真的不能运行SELECT * FROM表并一次处理所有结果,不是吗?

我发现最好的方法是使用游标并以增量的方式检索行,例如一次检索10行。

有没有人能开导我?我在linux上使用PostgreSQL 9。

谢谢

EN

回答 6

Stack Overflow用户

发布于 2010-11-30 17:10:51

当您必须处理大量数据时,游标是最佳选择。您也可以使用限制..偏移..方法,但这将变得越来越慢,具体取决于数据量。PostgreSQL在游标方面没有任何问题,在处理大量数据时可以使用游标。

SQL Server在游标方面有/有问题,MySQL不能处理存储函数之外的游标,这可能是一些数据库管理员不喜欢游标的原因。

票数 1
EN

Stack Overflow用户

发布于 2010-11-30 17:17:16

您可以使用record直接使用for循环:

代码语言:javascript
复制
do
$$
declare r record;

begin

    for r in select product_id, name from products loop
        raise notice '% %', r.product_id, r.jname;
    end loop;

end$$
票数 1
EN

Stack Overflow用户

发布于 2010-12-01 02:02:32

我认为最好的方法是使用COPY将所需的数据直接发送到客户端应用程序。

我在使用游标时也没有遇到任何问题。据我所知,游标为您保存了数据的快照,在形式上它(和COPY)是浏览结果的唯一正确方式,否则使用LIMIT..OFFSET可能会导致不一致,因为偏移量是由新插入的记录更改的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4312025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档