【发布时间】:2016-06-01 18:01:26
【问题描述】:
目前我的 SQL 结果集带来了大约 25 万条记录,需要处理。完成该过程需要 25 秒。我打算对它进行多线程处理。但无法从 ResultSet 中拆分数据。谷歌搜索时它说 CachedRowSet,但没有适当的例子来实现它。请有人帮我解决这个问题。提前致谢。
【问题讨论】:
-
您是否需要等待所有 250K 记录才能移动到应用程序的下一部分?如果没有,那么您可以在另一个线程中运行 ResultSet 代码并使用生产者/消费者模式。
-
@karthikeyan Govindaraj 尝试按集合获取数据。在 1000(分页)之后取数据 1000。然后它会很快并提供更好的性能..
-
@KarthikeyanSubramaniam 我做不到。因为我从表的连接中获取。所以如果我一个接一个地拿,可能有机会再次获得相同的记录吧?
-
另外,您是否可以优化查询,使其不带回 250K 记录。我怀疑您是否向 UI 显示了所有 250K 记录。
-
多线程无济于事。仍然只有一个网络,而且不是多线程的。您应该在发送之前尝试减小结果集的大小, 使用更具选择性的查询,或者通过更新在服务器上进行处理。
标签: java multithreading resultset cachedrowset