001.MySQL之Limit分页简单优化

LIMIT 还记得吗?


select * from table LIMIT 5,10; #返回第6-15行数据 

select * from table LIMIT 5; #返回前5行 

select * from table LIMIT 0,5; #返回前5行

我们来写分页

物理分页

select * from table LIMIT (当前页-1)*每页显示条数,每页显示条数;

 -- 传统方式
 SELECT * FROM table LIMIT 90001,100;
 -- 等价于
 SELECT * FROM table WHERE ID>=(
 SELECT Max(ID) FROM (
  SELECT ID FROM table ORDER BY ID LIMIT 90001
 ) As tmp
 ) limit 100;

-- 改造方式
 SELECT * FROM table WHERE ID>=(
 SELECT Max(ID) FROM (
  SELECT ID FROM table ORDER BY ID LIMIT 90000,1
 ) As tmp
 ) limit 100;

同样是取90000条后100条记录,传统方式还是改造方式?

传统方式是先取了前90001条记录,取其中最大一个ID值作为起始标识,然后利用它可以快速定位下100条记录

改造方式是仅仅取90000条记录后1条,然后取ID值作起始标识定位下100条记录

传统方式执行结果.100 rows in set (0.23) sec

改造方式执行结果.100 rows in set (0.19) sec

 -- 改造方式->简写方式
 SELECT * FROM table WHERE ID>=(

 SELECT ID FROM table ORDER BY ID LIMIT 90000,1

) limit 100;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文包括:1、分页技术概述2、实现分页3、完善分业——分页工具条4、几种常见的分页工具条 1、分页技术概述 物理分...
    廖少少阅读 4,487评论 0 38
  • 在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页...
    bycall阅读 4,063评论 0 5
  • 系统层面(基本不用动,看了下,买的云服务器基本都已经优化过了) 内核相关参数(/etc/sysctl.conf) ...
    神奇大叶子阅读 2,064评论 0 4
  • SQL 优化(载录于:http://m.jb51.net/article/5051.htm) 作者: (一)深入浅...
    yuantao123434阅读 752评论 0 7
  • 1.创建数据库:create database 数据库名 [character set 字符集][collate ...
    ZOKE阅读 497评论 0 0