【发布时间】: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 万个数据点并希望获得最好的结果。