我必须查询数据库,结果集非常大.我MySQL
用作数据库.为了避免在大量搜索之后出现"OutOfMemoryError",我得到了两个选项:一个使用LIMIT
(特定于数据库),另一个使用jdbc
fetchSize属性.
我测试了选项1(LIMIT
)它正在工作,但它不是理想的解决方案.我不想做.
使用jdbc
我发现ResultSet
默认情况下大小设置为0.如何将其更改为其他值.我尝试了以下方法:
a)首先尝试:
rs = preparedStatement.executeQuery(); rs.setFetchSize(1000); //Not possible as exception occurs before.
b)第二个T即使不存在,我也需要与数据库通信多个时间:
rs.setFetchSize(1000); //Null pointer exception(rs is null). rs = preparedStatement.executeQuery();
c)第三次尝试:
preparedStatement = dbConnection.createStatement(query); preparedStatement.setFetchSize(1000);
这些都不起作用.任何帮助赞赏!
编辑:
我不想使用限制的解决方案,因为:a)我的结果集中有数百万行.现在做多个查询很慢.我的假设是数据库需要多个查询
SELECT * FROM a LIMIT 0, 1000 SELECT * FROM a LIMIT 1000, 2000
作为两个不同的查询.
b)代码看起来很乱,因为你需要有额外的计数器.