什么是limit分页问题

select * from table limit 0,10 扫描满足条件的10行,返回10行。
但当执行select * from table limit 800000,20 的时候数据读取就很慢,limit 800000,20的意思扫描满足条件的800020行,扔掉前面的800000行,返回最后的20行,可想而知这时会很慢,测试了一下达到37.44秒之久。

怎么解决

利用表的覆盖索引来加速分页查询。

我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。

因为利用索引查找有优化算法,且数据就在查询索引上面,不用再回表查询数据行,这样节省了很多时间。

另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。

在我们的例子中,我们知道id字段是主键,自然就包含了默认的主键索引。

这次我们之间查询(利用覆盖索引,只包含id列),如下:

select id from product order by id limit 800000, 20

查询时间为0.2秒,相对于查询了所有列的37.44秒,提升100多倍的速度。

那么如果我们也要查询所有列,有两种方法:

方法1:子查询,id>=的形式:

select * from product
where ID >= ( select id from product order by id limit 800000,1 ) limit 20

查询时间为0.2秒,简直是一个质的飞跃啊。

方法2:利用join(推荐这种方法

select * from product a
JOIN ( select id from product order by id limit 800000,20 ) b on a.id = b.id

效果也差不多查询时间也很短。

子查询和关联查询性能对比

上面两个一个是子查询,一个是关联查询,那么这两种方案的查询性能哪一个更好呢?

  • 子查询:把内层查询结果当作外层查询的比较条件,使用 IN( ) 函数、EXISTS 运算符等,示例如下:

    select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
    

    执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。

  • 连接查询(JOIN)连接查询不需要建立临时表,因此其速度比子查询快。另外注意:能过滤先过滤,过滤好了再链接

MySQL的limit分页,为什么越往后翻越慢,怎么解决?相关推荐

  1. MySQL的limit分页公式和总页数计算

    MySQL的limit分页公式和总页数计算 limit分页公式:curPage是当前第几页:pageSize是一页多少条记录 limit (curPage-1)*pageSize,pageSize 实 ...

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

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

  3. MySQL:limit分页公式、总页数公式

    1)       limit分页公式 (1)limit分页公式:curPage是当前第几页:pageSize是一页多少条记录 limit (curPage-1)*pageSize,pageSize ( ...

  4. mysql分页到后面_mysql的分页查询,越往后翻越慢怎么办

    问题:在业务中,分页查询的场景非常多见,比如脚本分批处理数据:比如页面上需要分页查看列表. 假设是按照自增主键排序后分页,最开始的时候肯定没问题: SELECT * from table_name o ...

  5. MySQL数据库limit分页、排序

    select * from persons limit A, B; 解释: A,查询起点 B,你需要的行数 示例: select * from persons limit 0 , 4; 解释: 起点位 ...

  6. mysql的limit优化_mysql数据库limit优化例子(百万级数据)

    limit优化对于站长来说是经常会要用到了,同样的数据不同做法可以提升不少的性能了,下面我们来看一篇关于mysql数据库limit优化例子,具体如下. 今天看到一篇文章讲的就是mysql数据有100万 ...

  7. mysql limit 越大越慢_mysql 优化之14:php mysql limit 分页优化,页面值越大查询越慢...

    php mysql limit 分页优化,页面越大查询越慢 一.测试前言 当前测试表:nodes_hierarchy目前数据量为20多万 程序分页中我们经常使用的核心sql语句select * fro ...

  8. mysql大数据量使用limit分页,随着页码的增大,查询效率越低下。

    转载地址:http://www.cnblogs.com/lpfuture/p/5772055.html 测试实验 1.   直接用limit start, count分页语句, 也是我程序中用的方法: ...

  9. MySQL的limit用法和分页查询的性能分析及优化

    一.limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMI ...

最新文章

  1. 传统Excel绩效考核和绩效管理系统区别
  2. 院士 人工智能专业理解
  3. 0.0 目录-深度学习第五课《序列模型》-Stanford吴恩达教授
  4. python程序员工作时间_Python程序员是怎么找工作的?怎么最快时间找到自己想要的工作?...
  5. percona toolkit for mysql_Percona Toolkit for MySQL安装(CentOS5.8) | 学步园
  6. HYDRAstor:可扩展的二级存储
  7. php采集绕过cloudflare,三行代码带你绕过cloudflare反爬
  8. java的网络功能与编程_Java的网络功能与编程(转载)
  9. 学习使用资源文件[6] - 菜单资源
  10. 基于ExoPlayer的ExoPlayerVideoView
  11. python爬取方式_selenium+python爬取简书网站的方法
  12. 计算机考试可以用平板电脑吗,操作计算机等级考试平板电脑可以吗
  13. 华为eNSP Windows10安装教程及错误讲解
  14. 放生改变命运居士真实感应实录
  15. 运行VBS权限受限,需要用Run as Administrator的cmd窗口来运行
  16. PHP解决某些特殊汉字符或汉字转码后成乱码或者空白的问题
  17. 【怎样制作ppt】Focusky教程 | 调节音乐的音量(插入的音乐、背景音乐、录音的音量)
  18. Python | 用Python画个美队盾牌送给你
  19. 当虚拟筛选遇上高通量筛选
  20. ADS8328 驱动代码

热门文章

  1. webservice 天气预报的接口
  2. FileAlterationMonitor监听目录下文件变化
  3. 基于android记事本毕业论文,基于Android的记事本应用的设计与实现-毕业论文.doc...
  4. Android专用Log开源项目——KLog - 泡在网上的日子
  5. 极限存在准则 两个重要极限——“高等数学”
  6. 考研二战日记-第六天——高数1.6极限存在准则 两个重要极限
  7. 2020最新Git使用教程(超详细,很全面)
  8. gvim 模板(ab命令快速生成常用Verilog模板)
  9. linux pscp 上传_详解使用pscp命令Linux文件上传与下载
  10. Vcenter升级兼容性列表