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秒。当然,查询语句不是上面那种简单的查询。 展开
可是在 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秒。当然,查询语句不是上面那种简单的查询。 展开
4个回答
展开全部
resultset.next()是一个游标,理论上速度不会慢..
你再next做了什么处理?这种耗时是不准确的..只能做参考..
我和朋友测试了一个自己封装的jdbc..用我的电脑非常垃圾,但是他的电脑比较好,速度就超快...还用多线程处理
你再next做了什么处理?这种耗时是不准确的..只能做参考..
我和朋友测试了一个自己封装的jdbc..用我的电脑非常垃圾,但是他的电脑比较好,速度就超快...还用多线程处理
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
图显IP:
是不是你在遍历里进行了什么很耗性能的操作?建议你可以先把数据保存到列表,apache就提供dbutil可以调用一个方法就返回ArrayList,这样再循环写入excel就快多了
是不是你在遍历里进行了什么很耗性能的操作?建议你可以先把数据保存到列表,apache就提供dbutil可以调用一个方法就返回ArrayList,这样再循环写入excel就快多了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
system.out.println本身是比较耗费时间的。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不可能,如果只是遍历rs,2000记录不可能用上58秒,一定有别的原因
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询