如何以多线程或任何其他更快的方式处理ResultSet中的250K记录?

时间:2016-06-01 18:01:26

标签: java multithreading resultset cachedrowset

目前我的SQL resultSet带来了大约250K的记录,需要进行处理。完成该过程需要25秒。我打算对它进行多线程处理。但是无法从ResultSet中分割数据。当谷歌搜索它时说CachedRowSet,但没有适当的例子来实现它。请有人帮我解决这个问题。在此先感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过加入更多表来编写查询,也可以尝试使用它 两个关键词

FETCH and OFFSET.
For 1st Ex : fetch = 1, offset = 1000
For 2nd Ex : fetch = 1001, offset = 1000

请检查此链接 https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx

通过从数据库设置后获取set 您可以使用分页概念 在任何情况下都不会影响用户界面。

对于Oracle: 您可以通过指定OFFSET在12c上轻松完成。

在图12C中,

SELECT val FROM table ORDER BY val OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;

要在11g和之前做同样的事情,你需要分别使用ROWNUM两次,内部查询和外部查询。

11g中的相同查询,

SELECT val FROM (SELECT val, rownum AS rnum FROM (SELECT val FROM table ORDER BY val) WHERE rownum <= 8) WHERE rnum > 4;

这里OFFSET是4。