JDBC以块的形式检索Oracle数据

时间:2016-03-25 00:34:34

标签: java spring oracle performance jdbc

我想使用JDBC从Oracle数据库中恢复数据  块。与MySQL和其他数据库相比,ORacle不容易实现  仅从查询中恢复行的子集。有什么建议吗?

应该可以使用Java 8 API来流式传输JDBC。

我尝试使用分页实现。但是,分页总是下载所有  将结果放入结果集中,唯一可以避免的是映射。

我想以1&000; 000&000; 000的大块检索200&000; 000&000; 000的记录。

1 个答案:

答案 0 :(得分:2)

我认为你的问题有两个问题。 1.如何处理非常大的结果集(在Oracle中)。 2.如何进行分页(在Oracle中)。

Oracle支持服务器端游标,因此当它非常大时,您不需要对结果集进行分页。只需选择所需的一切,并为JDBC驱动程序指定1 000 000的FET SIZE。

如果您真的想要使用Oracle的分页(这是另一个问题)

您可以使用嵌套的select语句和逐行编号。首先,你选择你想要的。

select * 
  from ( select /*+ FIRST_ROWS(n) */ 
  a.*, ROWNUM rnum 
      from ( your_query_goes_here, 
      with order by ) a 
      where ROWNUM <= 
      :MAX_ROW_TO_FETCH ) 
where rnum  >= :MIN_ROW_TO_FETCH;