首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java遍历结果集 ResultSet.next()结果很慢解决方法

2013-02-19 
java遍历结果集 ResultSet.next()结果很慢执行完SQL语句,对结果集遍历发现速度较慢。代码如下:ResultSet rs

java遍历结果集 ResultSet.next()结果很慢
执行完SQL语句,对结果集遍历发现速度较慢。
代码如下:
ResultSet rs= pmt.execute(SQL);
while(rs.next()){
};
[解决办法]
那也得算算看究竟有多少行数据吧?

代码中简单的next()下,每行数据可都要从数据库端传给程序端的。
[解决办法]
改进sql,使用分页查询,比如mysql用
limit 0,100 控制返回结果集行数。
db2 用
fetch first 100 rows only 
sqlserver 用 top 100
等。
[解决办法]

引用:
200万条记录,遍历数据需要30s左右,我想并行加载,并行之后遍历数据需要25s,基本上没有并行效果


这种情况下,基本上是本机的网络IO或数据库的磁盘IO是瓶颈,想要依靠并行等技术来提速,得先确认瓶颈是哪个环节。
[解决办法]
多CPU主机的话,并行机制要能提升效率,主要偏重于CPU密集型操作;
也就是说你的SQL中需要大量的运算,这种情况下可以较好发挥多CPU的优势。

否则你服务器磁盘就那么一块,你就是个顺序读取文件,跟执行copy没啥本质区别,即便有100个CPU,效果差不多就那样。瓶颈基本就在 网络IO 或 磁盘IO 。

你可以把程序直接放在数据库服务器上执行,如果速度大大提升,说明之前瓶颈主要是网络IO;如果速度依然没有提升,说明瓶颈主要是磁盘IO。
[解决办法]
引用:
200万条记录,遍历数据需要30s左右,我想并行加载,并行之后遍历数据需要25s,基本上没有并行效果

要我觉得吧你这如果是单机普通硬盘的话,这速度真的挺快了,要是要提速,弄成分布式数据库集群,换成SSD,java方面的话估计没什么提升的,纯jdbc了

热点排行