mysql limit分页查询效率比拼
1、直接使用数据库提供的SQL语句 limit M ,N
SELECT * from message limit 0 , 10 ; -- 0.044 SELECT * from message limit 100 , 10 ; -- 0.084 SELECT * from message limit 1000 , 10 ; -- 0.087 SELECT * from message limit 10000 , 10 ; -- 0.102 SELECT * from message limit 100000 , 10 ; -- 0.236 SELECT * from message limit 1000000 , 10 ; -- 1.584 SELECT * from message limit 2000000 , 10 ; -- 2.961
适用场景:可以看出,在数据量小时,使用limit M ,N 可以很快的查询出数据,但是当数据量达到十万级甚至百万级时,查询效率呈几何倍数递增;
分析: 如下,其原因是,该查询会导致全表扫描,速度会很慢,且有的数据库返回结果集不稳定(如某次返回1,2,3,另外一次返回2,1,3),limit限制的是从结果集的M位置取出N条输出,其余抛弃;
2、基于索引排序
SELECT * from message order by id asc limit 0 , 10 ; -- 0.085 SELECT * from message order by id asc limit 100 , 10 ; -- 0.084 SELECT * from message order by id asc limit 1000 , 10 ; -- 0.088 SELECT * from message order by id asc limit 10000 , 10 ; -- 0.099 SELECT * from message order by id asc limit 100000 , 10 ; -- 0.227 SELECT * from message order by id asc limit 1000000 , 10 ; -- 1.532
适用场景:数据量小时,当数据量达到十万到百万级时,查询效率与第一种相比,仍呈现几何倍数递增
分析:在数据量小时,会根据索引进行选择,但是数据量大时,仍旧会导致全表扫描
3、基于所以筛选再排序
SELECT * from message order by id asc limit 10 ; -- 0.043 SELECT * from message where id > 100 order by id asc limit 10 ; -- 0.085 SELECT * from message where id > 1000 order by id asc limit 10 ; -- 0.085 SELECT * from message where id > 10000 order by id asc limit 10 ; -- 0.084 SELECT * from message where id > 100000 order by id asc limit 10 ; -- 0.085 SELECT * from message where id > 1000000 order by id asc limit 10 ; -- 0.083 SELECT * from message where id > 2000000 order by id asc limit 10 ; -- 0.085 SELECT * from message where id > 2000000 order by id desc limit 10 ; -- 0.085
总结:可以看出,该查询效率稳定,适用于数据量多是情况,最后ORDER BY后的列对象是主键或者唯一索引,使得ORDER BY操作能利用索引被消除,但是结果集是稳定的
分析:索引扫描,速度会很快;
mysql limit分页查询效率比拼的更多相关文章
- mysql limit分页查询效率
对于有大数据量的mysql表来说,使用LIMIT分页存在很严重的性能问题. 查询从第1000000之后的30条记录: SQL代码1:平均用时6.6秒 SELECT * FROM `cdb_posts` ...
- 在MySQL中如何使用覆盖索引优化limit分页查询
背景 今年3月份时候,线上发生一次大事故.公司主要后端服务器发生宕机,所有接口超时.宕机半小时后,又自动恢复正常.但是过了2小时,又再次发生宕机. 通过接口日志,发现MySQL数据库无法响应服务器.在 ...
- Mysql中分页查询两个方法比较
mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1; SELECT a FROM ...
- oracle 的分页查询与mysql 的分页查询
oracle 的分页查询: select * from (select o.*,rownum rn from Persons o) where rn >40 and rn <=60 : ...
- MySQL Limit 限定查询记录数
MySQL Limit 限定查询记录数 MySQL LIMIT MySQL 中 LIMIT 关键字用于限定查询记录返回最大数目. 语法: ... LIMIT offset , rows 该语法中,of ...
- Oracle和MySql的分页查询区别和PL/SQL的基本概念
Oracle和MySql的分页查询区别: Oracle的分析查询,之前Oracle的分页是使用伪列 ROWNUM 结合子查询实现,mysql的分页更简单,直接使用 LIMIT 关键字就可以实现 ...
- mysql in 子查询 效率慢 优化(转)
mysql in 子查询 效率慢 优化(转) 现在的CMS系统.博客系统.BBS等都喜欢使用标签tag作交叉链接,因此我也尝鲜用了下.但用了后发现我想查询某个tag的文章列表时速度很慢,达到5秒之久! ...
- Mybatis的ResultMap与limit分页查询
ResultMap主要解决的是:属性名和字段不一致 如果在pojo中设置的是一个名字,在数据库上又是另一个名字,那么查询出来的结果或者其他操作的结果就为null. //在pojo中 private S ...
- mysql limit分页查询优化写法
在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用orderby排 序.但是在表数据量比较大的时候,例如查询语句片段limit 10000, 20,数据库会读取10020条 ...
随机推荐
- 如何确保TCP协议传输稳定可靠?
TCP,控制传输协议,它充分实现了数据传输时的各种控制功能:针对发送端发出的数据包确认应答信号ACK:针对数据包丢失或者出现定时器超时的重发机制:针对数据包到达接收端主机顺序乱掉的顺序控制:针对高效传 ...
- Linux 运行jar包命令(Cent OS 7后台运行jar包)
Linux 运行jar包命令如下: 方式一 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu. ...
- MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中实现查 ...
- [AI开发]目标跟踪之计数
基于视频结构化的应用中,目标在经过跟踪算法后,会得到一个唯一标识和它对应的运动轨迹,利用这两个数据我们可以做一些后续工作:测速(交通类应用场景).计数(交通类应用场景.安防类应用场景)以及行为检测(交 ...
- C#语言注释详解
C#语言注释有三种形式 C#语言注释有三种形式 第一种是多行注释: /* */ 例如: /* int a=1; int b=2; int c=3; */// 第二种是单行注释: 例如: // int ...
- C语言实现-航空订票系统(飞机订票系统)
开发环境:CodeBlocks 开发语言:C 实现功能:登录,订票,退票 数据存储:文本读写 涉及文件: 相关文件下载: 码云:https://gitee.com/ikaros-521/c_pro ...
- 跟我学SpringCloud | 第十四篇:Spring Cloud Gateway高级应用
SpringCloud系列教程 | 第十四篇:Spring Cloud Gateway高级应用 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 ...
- Java面试总结(一)
1.equals和==和hashcode “==”是运算符,比较两个变量的值是否相等 equals是Object类的方法.比较两个对象是否相等 hashcode是Object类的方法,返回一个 ...
- Spring MVC源码(二) ----- DispatcherServlet 请求处理流程 面试必问
前端控制器 前端控制器,即所谓的Front Controller,体现的是设计模式中的前端控制器模式.前端控制器处理所有从用户过来的请求.所有用户的请求都要通过前端控制器.SpringMVC框架和其他 ...
- 【POJ - 1190】生日蛋糕 (dfs+剪枝)
Descriptions: 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为 ...