结果集中的fetchsize默认设置为0

 美甲控Alily 发布于 2023-02-11 18:06

我必须查询数据库,结果集非常大.我MySQL用作数据库.为了避免在大量搜索之后出现"OutOfMemoryError",我得到了两个选项:一个使用LIMIT(特定于数据库),另一个使用jdbcfetchSize属性.

我测试了选项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)代码看起来很乱,因为你需要有额外的计数器.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有