2014-11-21 538 views
-1

在Oracle,MySQl或MSSQL的ResultSet中,如何让结果集循环更快?如何让ResultSet for循环更高效

while (rs.next()) { 

     for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) { 
      rs.getString(i) 

     } 

    } 

这个伟大的工程,只要你没有多列,但只要你有例如90列和100列000,那么这个for循环进入低谷100个000行90倍。

+0

你有什么打算呢? – EpicPandaForce 2014-11-21 15:42:02

+0

你看过谷歌上的“jdbc paging”吗?它有助于处理大量数据。或者在阅读时使用光标 – sfat 2014-11-21 15:44:01

+3

嗯,你告诉它。如果您需要获取所有行的所有列的所有字符串,这几乎是您的选择。你可以尝试缓存列数,但我怀疑这没有多大帮助 - 你仍然在迭代9M次。你究竟需要做什么? – 2014-11-21 15:44:01

回答

2

一两件事,试图将刚刚得到的列数一次:

int colCount = rs.getMetaData().getColumnCount(); 
while (rs.next()) { 
    for (int i = 0; i < colCount; i++) { 
     rs.getString(i) 
    } 
} 
+0

实际上并没有太大的区别。 – miniHessel 2014-11-23 15:10:22