首页 文章

从Postgres表中获取所有行

提问于
浏览
0

我们在Postgres DB中有一个表,其中列出了两个整数,比如说i1,i2和一个double,比如d .

出于某种原因,我们需要此表中所有行中的这些字段的所有值 . 另外,我们需要使用Java来做这件事,不要问我为什么 .

我正在努力寻找最有效的方法 . 当然,我可以使用查询执行Java语句

SELECT i1, i2, d FROM mytable;

然后迭代ResultSet . 我担心这会给数据库带来负担 .

表可能包含数百万行(绝对小于10米),我们只对这三个字段感兴趣 .

如果有一个主列主键,我可以轻松编写一个光标调用,就像这样

SELECT i1, i2, d FROM mytable where primarykey > ?;

但该表没有单列主键 .

虽然i1和i2保证是唯一的,但table没有索引,并且鉴于这只是一次性活动,团队中的任何人都不太可能对创建索引感兴趣 .

没有索引,我怀疑选择所有行实际上比i1和i2的订购便宜,然后使用这些来编写一个光标 .

这样做效率最高,问题最少的方法是什么?

1 回答

  • 0

    只需运行select即可获取所有行 . Postgres绝对可以解决这个问题 .

    遗漏任何 order by 以使处理更便宜 .

    您应该关注的唯一问题是驱动程序的内存消耗 . 默认情况下,Postgres驱动程序在从 executeQuery() 调用返回之前在内存中缓冲 all 行 .

    您可能需要将驱动程序配置为不执行此操作 . 这在驱动程序手册中有所介绍:

    https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor

相关问题