问题原因

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速度太慢优化方法相关推荐

  1. mysql无序id怎么优化limit_MYSQL分页limit速度太慢优化方法

    原标题:MYSQL分页limit速度太慢优化方法 在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦. 当一 ...

  2. mysql limit 分页 优化_MYSQL分页limit速度太慢优化方法

    在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器哦. 当一个表数据有几百万的数据的时候成了问题! 如 * f ...

  3. MySQL分页查询速度慢的优化

    数据数量足够大的分页查询会变得慢,这个时候我们就需要进行优化. 优化的方法也有很多,下面简述一下我用过的一些方法. 表名:order_history 描述:某个业务的订单历史表 主要字段:unsign ...

  4. mysql分页和innodb_太厉害了!阿里大牛就这样把MySQL讲清楚了(基础+优化+架构)...

    前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...

  5. mysql分页limit运算,MySQL的limit分页查询及性能问题

    MySQL 通过 limit 实现分页查询.limit 接收一个或两个整数型参数.如果是两个参数,第一个指定返回记录行的偏移量,第二个指定返回记录行的最大数目.初始记录行的偏移量是 0.为了与 Pos ...

  6. mysql优化的几种方法_详解mysql数据库不同类型sql语句优化方法

    概述 分享一下之前笔记记录的一些不同类型sql语句优化方法,针对mysql. 主要分成优化INSERT语句.优化ORDER BY语句.优化GROUP BY 语句.优化嵌套查询.优化OR语句这几个方面, ...

  7. keras里predict函数预测速度慢的优化方法

    需求分析:在keras模型中,使用predict函数对1.9kw个样本进行预测,但是速度较慢 (1)tensorflow版本: import tensorflow as tf from tensorf ...

  8. .net mysql limit 分页原理_浅谈MySQL分页Limit的性能问题

    MySQL的分页查询通常通过limit来实现.limit接收1或2个整数型参数,如果是2个参数,第一个是指定第一个返回记录行的偏移量,第二个是返回记录行的最大数目.初始记录行的偏移量是0.为了与Pos ...

  9. MYSQL千万级数据量的优化方法积累

    为什么80%的码农都做不了架构师?>>>    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 whe ...

最新文章

  1. 如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
  2. UA MATH563 概率论的数学基础1 概率空间3 概率测度
  3. Ansys节点数据批量一键导出脚本生成CSV (ansys数据导出利用matlab脚本)
  4. JavaScript--百度地图那些坑
  5. DCDC开关电源的阶跃响应和动态响应(Load Transient)的区别
  6. C# winform 自定义控件配置代码 多显示 换行
  7. 聚合和分组F,Q和事物,cookie,session
  8. R、RStudio下载与安装方法
  9. UltraISO制作大于4G文件的光盘映像可启动U盘
  10. arm-linux-g++: command not found,解决Linux “g++: Command not found”报错问题 | 老左笔记
  11. java实现数字转中文大写数字
  12. SQL数据库的组合查询和统计查询
  13. C语言最-佳存款方案程序(代码原创)
  14. QWidget 半透明窗口解决方案
  15. [书摘]金玉良缘(摘自:幽默大师林语堂 作者:朱艳丽)
  16. NoSqlRedis
  17. QQ如何设置使用代理服务器?
  18. 使用getter方法和setter方法
  19. java 简单万年历_Java_万年历(简单)
  20. 微电子器件实验 03 - | 晶体管开关时间的测量

热门文章

  1. 【迁移学习】隐私保护下的迁移算法
  2. pytorch简单代码实现deep dream图(即CNN特征可视化 features visualization)
  3. CVPR2019 | 目标检测新文:Generalized Intersection over Union
  4. AI驱动的超分辨技术落地实践
  5. 【看这里】网易云信 IM 红包上线啦!最快3小时集成红包功能
  6. 聚能聊每周精选 第二十三期
  7. OpenGL ES 2兼容函数列表
  8. 中国联通SDN/NFV的思考与实践
  9. 关于CS架构文件传输流的问题,文中代码都是转自网上,但可保证代码无无误...
  10. android:layout_gravity=end,Android中 layout_gravity和gravity的区别