MYSQL分页limit速度太慢优化方法
问题原因
limit 10000,20
的意思扫描满足条件的 10020
行,扔掉前面的 10000
行,返回最后的 20
行,问题就在这里
原理
利用表的覆盖索引来加速分页查询
我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。
因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。
在我们的例子中,我们知道id字段是主键,自然就包含了默认的主键索引。现在让我们看看利用覆盖索引的查询效果如何:
这次我们之间查询最后一页的数据(利用覆盖索引,只包含id列),如下:
select id from product limit 866613, 20 0.2秒
那么如果我们也要查询所有列,有两种方法,一种是id>=的形式,另一种就是利用join,看下实际情况:
SELECT * FROM product WHERE ID > =(select id from product limit 866613, 1) limit 20
查询时间为0.2秒,简直是一个质的飞跃啊,哈哈
另一种写法
SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id
查询时间也很短,赞!
MYSQL分页limit速度太慢优化方法相关推荐
- mysql无序id怎么优化limit_MYSQL分页limit速度太慢优化方法
原标题:MYSQL分页limit速度太慢优化方法 在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦. 当一 ...
- mysql limit 分页 优化_MYSQL分页limit速度太慢优化方法
在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦. 当一个表数据有几百万的数据的时候成了问题! 如 * f ...
- MySQL分页查询速度慢的优化
数据数量足够大的分页查询会变得慢,这个时候我们就需要进行优化. 优化的方法也有很多,下面简述一下我用过的一些方法. 表名:order_history 描述:某个业务的订单历史表 主要字段:unsign ...
- mysql分页和innodb_太厉害了!阿里大牛就这样把MySQL讲清楚了(基础+优化+架构)...
前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...
- mysql分页limit运算,MySQL的limit分页查询及性能问题
MySQL 通过 limit 实现分页查询.limit 接收一个或两个整数型参数.如果是两个参数,第一个指定返回记录行的偏移量,第二个指定返回记录行的最大数目.初始记录行的偏移量是 0.为了与 Pos ...
- mysql优化的几种方法_详解mysql数据库不同类型sql语句优化方法
概述 分享一下之前笔记记录的一些不同类型sql语句优化方法,针对mysql. 主要分成优化INSERT语句.优化ORDER BY语句.优化GROUP BY 语句.优化嵌套查询.优化OR语句这几个方面, ...
- keras里predict函数预测速度慢的优化方法
需求分析:在keras模型中,使用predict函数对1.9kw个样本进行预测,但是速度较慢 (1)tensorflow版本: import tensorflow as tf from tensorf ...
- .net mysql limit 分页原理_浅谈MySQL分页Limit的性能问题
MySQL的分页查询通常通过limit来实现.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录行的偏移量,第二个是返回记录行的最大数目.初始记录行的偏移量是0.为了与Pos ...
- MYSQL千万级数据量的优化方法积累
为什么80%的码农都做不了架构师?>>> 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 whe ...
最新文章
- 如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
- UA MATH563 概率论的数学基础1 概率空间3 概率测度
- Ansys节点数据批量一键导出脚本生成CSV (ansys数据导出利用matlab脚本)
- JavaScript--百度地图那些坑
- DCDC开关电源的阶跃响应和动态响应(Load Transient)的区别
- C# winform 自定义控件配置代码 多显示 换行
- 聚合和分组F,Q和事物,cookie,session
- R、RStudio下载与安装方法
- UltraISO制作大于4G文件的光盘映像可启动U盘
- arm-linux-g++: command not found,解决Linux “g++: Command not found”报错问题 | 老左笔记
- java实现数字转中文大写数字
- SQL数据库的组合查询和统计查询
- C语言最-佳存款方案程序(代码原创)
- QWidget 半透明窗口解决方案
- [书摘]金玉良缘(摘自:幽默大师林语堂 作者:朱艳丽)
- NoSqlRedis
- QQ如何设置使用代理服务器?
- 使用getter方法和setter方法
- java 简单万年历_Java_万年历(简单)
- 微电子器件实验 03 - | 晶体管开关时间的测量
热门文章
- 【迁移学习】隐私保护下的迁移算法
- pytorch简单代码实现deep dream图(即CNN特征可视化 features visualization)
- CVPR2019 | 目标检测新文:Generalized Intersection over Union
- AI驱动的超分辨技术落地实践
- 【看这里】网易云信 IM 红包上线啦!最快3小时集成红包功能
- 聚能聊每周精选 第二十三期
- OpenGL ES 2兼容函数列表
- 中国联通SDN/NFV的思考与实践
- 关于CS架构文件传输流的问题,文中代码都是转自网上,但可保证代码无无误...
- android:layout_gravity=end,Android中 layout_gravity和gravity的区别