resultset.next() 速度的问题

因需要DOWNLOAD列表导成EXCEL。所以需要遍历所有结果集。可是在resultset.next()的时候发现速度很慢,SQL执行只用到了2秒,可在遍历2000条结果... 因需要 DOWNLOAD 列表 导成 EXCEL。所以需要遍历所有结果集。
可是在 resultset.next() 的时候 发现速度很慢 ,SQL 执行只用到了 2秒,
可在遍历2000条结果集的时候 就耗费了 将近1分钟的时间。

求各位大虾,告诉我为什么会这么慢,且有没有解决方案?
我来发一下我测试的代码,已经不能再简单了。
Class.forName("oracle.jdbc.driver.OracleDriver");
String url ="jdbc:oracle:thin:@00.00.00.00:1521:test";
Connection conn = DriverManager.getConnection(url,"test","test");
Statement st = conn.createStatement(oResultSet.TYPE_FORWARD_ONLY,oResultSet.CONCUR_READ_ONLY);
StringBuffer str = new StringBuffer();
str.append("select * from test_table");
oResultSet = st.executeQuery(str.toString());
long start = System.currentTimeMillis();
while(oResultSet.next())
{
System.out.print(" column --> "+ oResultSet.getString("columnname"));
}
long end = System.currentTimeMillis();
System.out.println("overall time "+ (end -start));

有一点,我访问的数据库地址是外网的。是国外的IP地址。但这个我觉得不是关键问题。
我在EXCUTE 的地方也加了时间,执行时间不到2秒。当然,查询语句不是上面那种简单的查询。
展开
 我来答
ljl0284
2010-10-23 · TA获得超过100个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:108万
展开全部
resultset.next()是一个游标,理论上速度不会慢..
你再next做了什么处理?这种耗时是不准确的..只能做参考..
我和朋友测试了一个自己封装的jdbc..用我的电脑非常垃圾,但是他的电脑比较好,速度就超快...还用多线程处理
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT锦囊
2010-10-22 · TA获得超过441个赞
知道小有建树答主
回答量:1333
采纳率:0%
帮助的人:696万
展开全部
图显IP:
是不是你在遍历里进行了什么很耗性能的操作?建议你可以先把数据保存到列表,apache就提供dbutil可以调用一个方法就返回ArrayList,这样再循环写入excel就快多了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blacklong
2010-10-27 · TA获得超过1500个赞
知道大有可为答主
回答量:2745
采纳率:0%
帮助的人:1248万
展开全部
system.out.println本身是比较耗费时间的。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaoyongbo026
2010-10-22 · TA获得超过297个赞
知道小有建树答主
回答量:227
采纳率:100%
帮助的人:108万
展开全部
不可能,如果只是遍历rs,2000记录不可能用上58秒,一定有别的原因
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式