您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 梧州分类信息网,免费分类信息发布

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

2025/10/1 23:50:35发布10次查看
正常来说,一般是不会出现这种情况的,但也不能保证,偶尔有这种情况发生,解决方案如下:
使用分页查询语句。     (推荐学习:mysql学习)
因为分页查询每次只会查询少量数据,所以不会占用太多内存,而且数据量很大的时候,分页查询会节约一些时间的。
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查询数据过多内存溢出怎么办的详细内容。
梧州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product