从Postgres表

时间:2017-03-01 11:06:43

标签: sql postgresql jdbc

我们在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保证是唯一的,但表没有索引,并且鉴于这只是一次性活动,团队中的任何人都不太可能对创建索引感兴趣。

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

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

1 个答案:

答案 0 :(得分:0)

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

忽略任何order by以降低处理成本。

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

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

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