1. 常见问题

在mysql大数据量的基础下,分页中随着页码的增加,查询时间也会响应的增加。所以到了百万级别的数据量时,我们就需要优化已有的查询代码进行合理有效的分页。

一般情况下,页码与查询时间成正比

SELECT count(*) FROM `sys_user`
结果: 4344284
> 时间: 1.132s
SELECT * FROM `sys_user` LIMIT 10000,20
> 时间: 0.095s
SELECT * FROM `sys_user` LIMIT 100000,20
> 时间: 0.181s
SELECT * FROM `sys_user` LIMIT 1000000,20
> 时间: 1.302s
SELECT * FROM `sys_user` LIMIT 4000000,20
> 时间: 5.498s

2. 出现的原因

我们先要了解到 limit 4000000,20的意思扫描满足条件的4000020行,扔掉前面的4000000行,返回最后的20行,问题就在这里,其实我们每次都只是需要20行的数据内容,那么到后面每次查询需要扫描超过400W+行,性能肯定大打折扣。

3. 解决方式

对超过特定阈值的页数进行 SQL改写:

SELECTa.*
FROM`sys_user` a,( SELECT id FROM `sys_user` LIMIT 4000000, 20 ) b
WHEREb.id = a.id
> 时间: 0.699s

将语句抽离成一个可以复用的sql

SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 LIMIT 100000,20 ) b where a.id=b.id

4. 原理

利用覆盖索引来进行查询操作,避免回表

说明:如果一本书需要知道第 11 章是什么标题,会翻开第 11 章对应的那一页吗?目录浏览一下就好,这个目录就是起到覆盖索引的作用。我们语句中的覆盖索引就使用的就是

SELECT id FROM `sys_user` LIMIT 4000000, 20

这条sql直接拿到我们要查询的20条数据的id,再去表中查询它的具体数据

MYSQL大数据量分页查询优化 - 十万、百万级优化相关推荐

  1. easyui分页查询为什么会有下拉框_6个针对MySQL大数据量分页查询优化的锦囊妙计...

    作者:大神养成记转载来源:http://sina.lt/gauW 方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M ...

  2. mysql大数据量分页的一些做法

    随着公司业务的增长,数据库的数据也呈指数级增长,拿订单表为例,之前公司的订单表每天只有几千个,一个月下来不超过十万.而现在每天的订单大概就是2w+,目前订单表的数据已经达到了700w.这带来了各种各样 ...

  3. MySQL大数据量分页查询方法及其优化

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多 链接:ht ...

  4. 千锋重庆Java学习之MySQL大数据量分页查询方法及其优化

    方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺 ...

  5. MySQL 和 Oracle 大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  6. 千万级别数据查询优化_MySQL大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  7. mysql一样的查询在我本地很快但是线上很慢_MySQL大数据量分页查询方法及其优化...

    MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...

  8. (转)大数据量分页存储过程效率测试附代码

    大数据量分页存储过程效率测试附代码 在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750  内存: ...

  9. PHP排序大数据量分页

    大数据量分页,除了使用mysql的limit 排序,也可以使用php排序,来实现业务. limit a,b 的取数据方式是,先取出a+b条数据,再把a条筛选掉,剩b条,相当于一次性要取a+b条的数据, ...

最新文章

  1. 使用SourceTree拉取代码出现Permission denied (publickey)
  2. python生成四位随机数
  3. 掌握这 20 个容器实战技巧!
  4. Jetty,Java和OAuth入门
  5. javaone_JavaOne 2012:使用HTML5和Java构建移动应用程序
  6. 调用第三方接口的几种请求方式
  7. 编程判断元素归类_编程:找出所有符合条件的元素
  8. vue.js官方中文文档
  9. 松下弧焊机器人 调电压_松下焊接机器人-基本操作篇.pdf
  10. wgs84转cgcs2000 java_CGCS2000坐标系与WGS84的相互投影转换
  11. 服务器防火墙开启导致无法远程连接解决方案
  12. Typora修改图片保存位置
  13. 春招艰难?给你几条应届生的求职建议!
  14. 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
  15. Tacotron以及Tacotron2详解
  16. mac使用zsh终端环境变量配置无效的解决方案
  17. java 序列化成xml文件_将Java对象序列化成JSON和XML格式
  18. linux内核教学的全套视频,中科大老师全程讲解Linux内核分析视频教程《附加介绍+总结》共23节课...
  19. 2021年中国工业和商业LED照明市场趋势报告、技术动态创新及2027年市场预测
  20. mysql网吧管理系统_基于jsp的网吧管理系统-JavaEE实现网吧管理系统 - java项目源码...

热门文章

  1. iOS 获取字符串数学公式、字符串条件运算和逻辑运算的计算结果
  2. 关于百度OCR文字识别JAVA服务器端设置
  3. 回溯算法背包问题(java实现)
  4. 霍纳法则——计算多项式的值
  5. 关于氚云PasS的介绍
  6. 餐饮管理系统目的及意义
  7. 【无标题】OrientDB Java连接操作
  8. Alcatel-Lucent 7750 运营商认证设备在线用户数OID
  9. Spring积累(3):依赖注入3种方式
  10. 四则混合运算c语言程序例,用c语言编程四则混合运算计算器