我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql查询数据过多内存溢出的解决方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql查询数据过多内存溢出的解决方法

这篇文章主要介绍sql查询数据过多内存溢出的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

正常来说,一般是不会出现这种情况的,但也不能保证,偶尔有这种情况发生,解决方案如下:

使用分页查询语句。

因为分页查询每次只会查询少量数据,所以不会占用太多内存,而且数据量很大的时候,分页查询会节约一些时间的。

String sql = " SELECT uid,uname  FROM t_user LIMIT ?,? " ;
        PreparedStatement  ps = con.prepareStatement(sql) ;
        int pageSize = 10000; 
        int pageId = 0; 
        do { 
            pst.setInt(1, pageId * pageSize); 
            pst.setInt(2, pageSize); 
            ResultSet rs = pst.executeQuery();

            boolean isEmpty = true; 
            while (rs.next()) { 
                 isEmpty = false; 
                 id = rs.getInt(1); 
                 name = rs.getString(2); 
            } 
            if (isEmpty) { 
                break; 
            } 
            pageId++; 
        } while (true); 
        con.close(); 
    } catch (SQLException e) { 
        e.printStackTrace(); 
    }

添加url参数配置

在jdbc的URL上加两个参数就OK,成功解决内存溢出的问题。

"jdbc:mysql://localhost:3306/db3?useCursorFetch=true&defaultFetchSize=100";

( 解释一下Fetch,当我们执行一个SQL查询语句的时候,需要在客户端和服务器端都打开一个游标,并且分别申请一块内存空间,作为存放查询的数据的一个缓冲区。这块内存区,存放多少条数据就由fetchsize来决定,同时每次网络包会传送fetchsize条记录到客户端 )

以上是“sql查询数据过多内存溢出的解决方法”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql查询数据过多内存溢出的解决方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sql查询数据过多内存溢出怎么处理

当查询的数据过多导致内存溢出时,可以考虑以下几种处理方式:1. 使用分页查询:将查询结果分页返回,每次只查询一定数量的数据,避免一次性加载过多数据导致内存溢出。2. 优化查询语句:通过优化查询语句,减少返回结果集的大小。可以使用索引、合理地
2023-09-05

导出数据量大的报表内存溢出怎么解决

小编今天带大家了解导出数据量大的报表内存溢出怎么解决,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“导出数据量大的报表内存溢出怎么解决
2023-06-03

sql数据库多表查询的方法是什么

在SQL中,可以通过使用JOIN关键字来进行多表查询。JOIN操作允许将多个表连接起来,根据表之间的关系进行数据的检索和过滤。常见的JOIN操作包括:1. INNER JOIN:只返回两个表中匹配的行。2. LEFT JOIN:返回左表中的
2023-10-08

sql查询过滤重复数据的方法是什么

在SQL中,可以使用DISTINCT关键字来过滤掉重复的数据。DISTINCT关键字用于从查询结果中选择唯一的记录,即去除重复的记录。例如,假设有一个名为"customers"的表,包含以下数据:```id | name | email-
2023-09-15

SQL查询中出现笛卡尔积现象的解决方法

目录一、 笛卡尔积二、笛卡尔积在sql中是这样的三、解决办法一、 笛卡尔积笛卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的
2023-05-26

全网多种方法解决数据库有数据,但mybatis查询出来的值为Null、为空或不存在的问题

文章目录 1. 复现问题 2. 分析问题 3. 解决问题 4. 解决该问题的其他方式 5. 总结说明 1. 复现问题 今天在查询组件详情时,却报出如下错误: 接下里,我便详细分析出现该错误的原因。 2. 分析问题
2023-08-22

32位操作系统不能认出超过4G内存的解决方法

编辑操作系统安装盘下boot.ini文件(隐藏文http://www.cppcns.com件),在[operating systems]的行后,加入/PAE,保存,重启系统后,就会认出超出4G的内存。如:[operating systems
2023-05-24

达梦数据库SQL查询报错不是 GROUP BY 表达式解决方法

达梦数据库SQL查询报错:不是 GROUP BY 表达式解决方法 1、前言 随着达梦数据库国产化率越来越高,很多如Oracle、Mysql、SQL Server逐步迁移到达梦数据库上来,但难免会有一些其它数据库独有的用法在达梦上会报错,但达
2023-08-30

Excel数据导入Mysql常见问题汇总:如何解决导入大量数据时内存溢出的问题?

Excel数据导入Mysql常见问题汇总:如何解决导入大量数据时内存溢出的问题?导入Excel数据到Mysql数据库是一个常见而重要的任务,在处理大量数据时,有时会遇到内存溢出的问题。本文将介绍一些解决这一问题的方法。拆分数据:如果Exce
2023-10-22

mysql查询过去24小时内每小时数据量的方法(精确到分钟)

目录项目场景:问题描述解决方案:附:mysql 查询每小时数据的总数总结项目场景:获取过去24小时每小时数据量(没有为0)问题描述时间段要求精确到分钟,即:10.33 ~ 11.33,11.33~12.33…&helli
2023-03-06

Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)

由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法。然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题。 错误案例:代码如下:String myna
2022-06-06

编程热搜

目录