我有一个从数据库返回的光标在31毫秒(毫秒)执行。
但是,当我使用这个游标有1500个多行来获取行
ResultSet rs = (ResultSet)cstm.getObject(6);
while(rs.next()){
system.out.println("...");
}
通过游标中的每一行只是简单的横移它采取超过40秒(40000毫秒)
可以做些什么?
我有一个从数据库返回的光标在31毫秒(毫秒)执行。
但是,当我使用这个游标有1500个多行来获取行
ResultSet rs = (ResultSet)cstm.getObject(6);
while(rs.next()){
system.out.println("...");
}
通过游标中的每一行只是简单的横移它采取超过40秒(40000毫秒)
可以做些什么?
事实上,在默认情况下JDBC使用10获取大小。
因此,如果您没有设置一个更大的价值,你会打电话给数据库记录旁边正好150倍......,没有必要解释往返的缺点。
所有你需要做的就是通过设置来测试性能fetchSize
例如为了.. 100:
statement.setFetchSize(100);
你可以用这个号码打根据你的环境在改善性能。
你在你的光标 1500个多行,什么是数据库返回的RS只是到该游标的引用。 所以,当你调用rs.next(),每次它进入数据库cursr,让你光标指针指向当前记录。
所以,很显然这将需要一些时间去数据库中的每个时间,并获取与每一个while循环迭代超过1500次的单个记录。