JDBC性能 - 将大型结果集从数据库传递到Java

时间:2014-07-17 23:43:26

标签: java oracle

我有一个与绩效相关的问题。我需要从数据库中检索大约500行,以便使用Apache POI将结果导出到Microsoft Excel电子表格中。

到目前为止,对于我的所有数据库查询,我一直在数据库层中填充PL / SQL对象,然后将该PL / SQL对象返回到Java并循环遍历结果。

但是现在我需要从db层返回这么大的结果集给我一个问题我是否认为将500行返回到Java通过XML Clob。

这是一个悬而未决的问题,但我希望能得到各方意见。

感谢

2 个答案:

答案 0 :(得分:3)

根据http://docs.oracle.com/cd/E11882_01/java.112/e16548/resltset.htm#JJDBC28621

  

默认情况下,当Oracle JDBC运行查询时,它会检索结果集   从数据库游标一次10行。这是默认值   Oracle行获取大小值。您可以更改行数   通过更改行检索每次数据库游标   获取大小值。

以下方法可用于所有Statement,PreparedStatement,CallableStatement和ResultSet对象,以设置和获取提取大小:

void setFetchSize(int rows) throws SQLException
int getFetchSize() throws SQLException

答案 1 :(得分:1)

使用Java ResultSet。这将一次只获取一些行,因为您需要它们。以下是如何使用它的示例:http://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html 基本上,每次请求新行时(如rs.next()),JDBC系统都会确定数据是否在客户端上可用,或者是否需要从服务器获取。这样,您就不会一次获取所有数据。