mysql分页查询报错:
前提:
1.每页1000条数据
2.查到57页的时候,就报错了
以下是错误信息:

org.springframework.jdbc.UncategorizedSQLException:
### Error querying database. Cause: java.sql.SQLException:
...省略中间...
received message larger than max (18441058 vs. 16777216)
### The error may exist in sqlmap/RxOrder.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT ...省略中间查询... LIMIT ?,?
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
...省略后面

关于这个错误,网上几乎没有太多可用记录,最初就猜想是分页太深,导致内存满了,毕竟是内存排序,最后找公司同事确认了,就是这个原因

解决方式就是优化sql,避开深度分页

原sql:
select * from table01 where id > 1000000000000 and id < 9000000000000
limit 57000,1000
sql的目的是分页查出所有的数据,但因为分页太深,导致数据库内存爆满,查询就停止了优化方案1(单步改分步查询):
select id from table01 where id > 1000000000000 and id < 9000000000000
limit 56999,1
第一步,先查出第56999条的id
select * from table01 where id > #{id} and id < 9000000000000
limit 57000,1000
第二步,直接从这个id开始向后拿1000条优化方案2(子查询):
select id from table01 where
id > (select id from table01 where id > 1000000000000 and id < 9000000000000
limit 56999,1)
and id < 9000000000000
limit 1000
原理和优化方案1一样,只不过放在一个sql中了,但是数据量大的数据库一般都分库分表,至少也是分片,所以对子查询的支持不是很好,因业务系统而异优化方案3(分步查询唯一字段,再组装):
select id from table01 where id > 1000000000000 and id < 9000000000000
limit 57000,1000
先查出id的集合list,再遍历这个集合,分别查出每个id对应的数据,再组装起来
这样的好处是将数据库的内存压力变相的转移到服务器,一般服务器还是可以抗住的
但这样的缺点也明显,就是多了层查询,会慢些优化方案4(缩小粒度):
业务原因,原来分页是以天为最小粒度,每天是个线程,每个线程再查所有
优化的话可以考虑以小时为一个最小粒度,每个小时是一个线程,那么每个小时的数据量就没那么大了,分页也就不会太深了
总结:一切优化的根本目的都是为了避开一次性的大数据量的分页

mysql分页查询报错,及解决相关推荐

  1. MySQL视图查询报错:Prepared statement needs to be re-prepared

    From: https://www.ywnds.com/?p=12609 今天公司的项目视图查询报错,报错如:ERROR 1615 (HY000): Prepared statement needs ...

  2. node.js 中Mysql 查询报错 ,解决方法。

    1.报错: throw err; // Rethrow non-MySQL errors 2.问题出处 mysql\lib\protocol\Parser.js:437 抛出异样,try..catch ...

  3. Java分页查询报错 Every derived table must have its own alias

    今天在项目中增加了一个简单的分页查询数据的接口,出现了Every derived table must have its own alias这个报错,看起来是个别名问题,但是sql很规范,该有的别名也 ...

  4. centos mysql 1146_MySQL查询报错:ERROR 1146 (42S02): Table 'craw.sitePageConfig' doesn't exist

    今天一同事咨询mysql的问题,在mysql主库访问某个表报错, 但是备库上可以,感觉有点奇怪.即使不同步, 也不能说主库不能访问啊. 既然是主备,就从主备同步开始查.各种show master st ...

  5. MySQL分页查询慢的方案解决

    背景 我们在开发的过程中使用分页是不可避免的,通常情况下我们的做法是使用limit加偏移量: select * from table where column=xxx order by xxx lim ...

  6. mysql连接服务报错1058

    mysql连接服务报错1058 解决办法: 针对win10系统:控制面板–>管理工具–>服务–>mysql,找到mysql后,若发现其为禁用状态,则选中MySQL后,右击–>属 ...

  7. (解决)除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效Mybatis-plus 默认分页功能报错

    (解决)除非另外还指定了 TOP.OFFSET 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.子查询和公用表表达式中无效Mybatis-plus 默认分页功能报错 我百度了 ...

  8. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  9. mysql查询新建查询报错_mysql开启慢查询报错:

    1.进入mysql命令行:#mysql -uroot -p123456,执行下面的命令开启慢查询报错: set global slow_query_log=on; set global long_qu ...

最新文章

  1. C#调用存储过程简单完整例子
  2. cocos2d-x游戏实例(15)-纵版射击游戏(2)
  3. yum安装Docker失败No package docker available
  4. 天线3db波束宽度_浅谈 Wi-Fi 天线(2)
  5. JAVA可不可以编写应用程序_编写一个java应用程序
  6. 存储进阶:怎么才能保证 IO 数据的安全?
  7. Nginx学习之七:通过Nginx社区进行技术交流
  8. Elasticsearch分布式机制探究
  9. watir-webdriver使用过程中异常
  10. matlab中 mcc/mbuild/mex 区别
  11. Java Web之MySQL在项目中的使用
  12. Linux服务器更换主板后,网卡识别失败的处理方法
  13. python协同过滤电影推荐的论文_Netflix电影推荐系统Python实现(协同过滤+矩阵分解)...
  14. 如何同步修改git项目名称和本地项目名称
  15. Jmeter系列(32)- 详解 CSV 数据文件设置
  16. Java程序从编写到运行
  17. 【操作系统】一起了解操作系统咯 | 原码,反码,补码,你理解到位了吗?
  18. 记录一次利用python调用chrome爬取天眼查网址工商信息的过程
  19. python格式jpg转换png(批量处理,深度24,尺寸不变)
  20. 基于SpringBoot实现QQ机器人

热门文章

  1. 14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构
  2. PHP中 .= 的意思
  3. 消息队列---消息模型及使用场景
  4. BUAA_OO_第二单元作业总结
  5. Openstack(二)基本环境准备--网络、时间、yum源等
  6. iOS加入百度地图的几个问题
  7. HDU1028——I gnatius and the Princess III
  8. HDU1878-欧拉回路(入门题+并查集)
  9. linux的常用操作——makefile
  10. Win32 程序运行原理