MYSQL大数据量分页查询优化 - 十万、百万级优化
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大数据量分页查询优化 - 十万、百万级优化相关推荐
- easyui分页查询为什么会有下拉框_6个针对MySQL大数据量分页查询优化的锦囊妙计...
作者:大神养成记转载来源:http://sina.lt/gauW 方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M ...
- mysql大数据量分页的一些做法
随着公司业务的增长,数据库的数据也呈指数级增长,拿订单表为例,之前公司的订单表每天只有几千个,一个月下来不超过十万.而现在每天的订单大概就是2w+,目前订单表的数据已经达到了700w.这带来了各种各样 ...
- MySQL大数据量分页查询方法及其优化
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:收藏了!7 个开源的 Spring Boot 前后端分离优质项目个人原创+1博客:点击前往,查看更多 链接:ht ...
- 千锋重庆Java学习之MySQL大数据量分页查询方法及其优化
方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N 适应场景: 适用于数据量较少的情况(元组百/千级) 原因/缺 ...
- MySQL 和 Oracle 大数据量分页查询方法及其优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...
- 千万级别数据查询优化_MySQL大数据量分页查询方法及其优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...
- mysql一样的查询在我本地很快但是线上很慢_MySQL大数据量分页查询方法及其优化...
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...
- (转)大数据量分页存储过程效率测试附代码
大数据量分页存储过程效率测试附代码 在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话. 测试环境 硬件:CPU 酷睿双核T5750 内存: ...
- PHP排序大数据量分页
大数据量分页,除了使用mysql的limit 排序,也可以使用php排序,来实现业务. limit a,b 的取数据方式是,先取出a+b条数据,再把a条筛选掉,剩b条,相当于一次性要取a+b条的数据, ...
最新文章
- 使用SourceTree拉取代码出现Permission denied (publickey)
- python生成四位随机数
- 掌握这 20 个容器实战技巧!
- Jetty,Java和OAuth入门
- javaone_JavaOne 2012:使用HTML5和Java构建移动应用程序
- 调用第三方接口的几种请求方式
- 编程判断元素归类_编程:找出所有符合条件的元素
- vue.js官方中文文档
- 松下弧焊机器人 调电压_松下焊接机器人-基本操作篇.pdf
- wgs84转cgcs2000 java_CGCS2000坐标系与WGS84的相互投影转换
- 服务器防火墙开启导致无法远程连接解决方案
- Typora修改图片保存位置
- 春招艰难?给你几条应届生的求职建议!
- 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
- Tacotron以及Tacotron2详解
- mac使用zsh终端环境变量配置无效的解决方案
- java 序列化成xml文件_将Java对象序列化成JSON和XML格式
- linux内核教学的全套视频,中科大老师全程讲解Linux内核分析视频教程《附加介绍+总结》共23节课...
- 2021年中国工业和商业LED照明市场趋势报告、技术动态创新及2027年市场预测
- mysql网吧管理系统_基于jsp的网吧管理系统-JavaEE实现网吧管理系统 - java项目源码...