【问题标题】:How to get ResultSet for loop to be more efficient如何让 ResultSet for 循环更有效
【发布时间】:2014-11-21 15:40:36
【问题描述】:

在来自 Oracle、MySQl 或 MSSQL 的 ResultSet 中,如何使结果集 for 循环更快?

    while (rs.next()) {

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

        }

    }

只要您不需要太多列,这就会很好用,但是只要您有 90 列和 100 000 行,那么这个 for 循环就会通过 100 000 行 90 次。

【问题讨论】:

  • 你打算做什么?
  • 嗯,是的,你告诉它。如果您需要获取所有行的所有列的所有字符串,这几乎是您的选择。您可以尝试缓存列数,但我怀疑这无济于事——您仍在迭代 9M 次。您实际上需要做什么?
  • 你在 google 上查看过jdbc paging 吗?它在处理大量数据时很有帮助。或在阅读时使用光标
  • 1 页不足以显示所有 100 000 条记录,所以最好使用分页,您将获得更好的性能
  • 您可以迭代地查询更少量的数据。这可能会加快速度,而不是减少 900 万个数据点并希望获得最好的结果。

标签: java resultset


【解决方案1】:

要尝试的一件事是只获取一次列数:

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

【讨论】:

  • 实际上并没有太大区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
相关资源
最近更新 更多