最近遇到个数据库分页查询问题,mysql数据库分页查询默认是升序查询,就是第一页查询的是最先插入的数据,最后一页才是最新插入的数据,弄了个小的数据库表单,记录下我的操作过程,还有优化查询速度的方法。

假设我的数据库里的表名为WHITELISTDATA,数据一共有13条,每页要求显示10条数据

1、一般分页查询方法:

第一页:

select * from WHITELISTDATA order by id limit 0,10备注:假如前端传入page=1,size=10,表示后端需要返回第一页数据,该页最大显示10条
上面的命令的最后两个数字0和10是传入的参数
0  =(page-1)*size
10 = size

(备注:limit后面的0是页数减1然后乘以每页显示数量10,limit的详细的分页知识可以自行再另外查询资料)

查询第二页:

select * from WHITELISTDATA order by id limit 10,10

2、优化查询方法(利用子查询进行优化查询)

查询第一页方法:

select * from WHITELISTDATA where id >= (select id from WHITELISTDATA order by id limit 0,1) limit 10;

查询第二页方法:

select * from WHITELISTDATA where id >= (select id from WHITELISTDATA order by id limit 10,1) limit 10;

备注:

优化的数据库查询当数据在上万情况下第二种方法比第一种方法快好几倍的查询速度

在此我大概解释下优化提速的原因:普通方法查询的时候会遍历数据库的每行和每列数据,全部都要读一遍,所以数据上万条了,键值又多的话会慢的不行。

优化用的子查询方法就要稍微好点,他首先是通过这条语句《select id from WHITELISTDATA order by id limit 0,1》查询到分页查询的那个ID值,不是遍历每行每列数据,耗时少,然后再根据这条语句《select * from WHITELISTDATA where id >= 》查询ID值大于上面查询出来的那个ID值得数据即可,所以遍历的数据就只有10条数据,所以当数据量很大的时候查询速度会快很多。

3、降序查询

上面的查询方式都是通过ID的升序查询,所以在分页查询的时间,新添加的数据会被放到最后一页,有些需求是最新添加的数据需要放在最前面,保证用户方便查看,所以此时需要降序查询,数据库查询默认情况下是升序查询,降序查询需要修改一些参数,本质就是加一个desc参数。

普通方法的降序查询

降序查询第一页数据方法

select * from WHITELISTDATA order by id desc limit 0,10

降序查询第二页数据方法

select * from WHITELISTDATA order by id desc limit 10,10;

优化降序查询方法:

优化降序查询第一页数据方法

select * from WHITELISTDATA where id <= (select id from WHITELISTDATA order by id desc limit 0,1) order by id desc limit 10;

优化降序查询第二页数据方法

select * from WHITELISTDATA where id <= (select id from WHITELISTDATA order by id desc limit 10,1) order by id desc limit 10;

Mysql数据库分页查询及优化相关推荐

  1. MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操作. 分页查询 在MySQL中,分页查询一般都是使用limit子句实现,limit子句声明如下: SELECT * FROM table LIMI ...

  2. 【mySQL】mysql数据库分页查询讨论专题

    目录 一.limit分页公式.总页数公式 1 limit分页公式 2 总页数公式 二 .Mysql的三种分页方法 1 limit m,n分页语句(低效) 2 limit m语句 (有局限) 三. 查询 ...

  3. Java web访问MySql数据库分页查询

    有时候我们查询数据库表时,但是很多时候表中的记录很多,需要显示出来的话怎么办?这时可以使用分页的方法,就是指定从数据库表的什么位置开始查询显示,以及指定显示的记录数目. Mysql数据库提供了limi ...

  4. MySQL数据库分页查询limit

    1. 分页查询介绍 当数据特别多,一页显示不完,需要一页一页的进行显示,这就是分页查询. 2. 分页查询语法 select * from 表名 limit start,count 说明: limit是 ...

  5. PHP——MySQL数据库分页查询

    原理 https://blog.csdn.net/weixin_43272781/article/details/101319460 效果 代码 <!DOCTYPE HTML PUBLIC &q ...

  6. mysql 分页查询web_JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)...

    JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)-1.jpg (40.23 KB, 下载次数: 0) 2018-8-18 13:34 上传 在开发过程中,经常做的一件事,也是最基本的事 ...

  7. mysql百万数据 查总数都特别慢_mysql百万级数据分页查询缓慢优化方法

    参考网址1:https://www.cnblogs.com/nightOfStreet/p/9647926.html           -------------修改需求 一.与产品商讨 修改需求 ...

  8. Mysql数据库常用查询方法及演示(where条件查询、分页、排序等)

    Mysql数据库常用查询方法及演示 where条件查询的介绍 使用where条件查询可以对表中的数据进行筛选,条件成立的记录会出现在结果集中. where语句支持的运算符: 比较运算符 逻辑运算符 模 ...

  9. Oracle、MySql、SQLServer 数据库分页查询语句

    (一).** mysql的分页查询** mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句* firs ...

最新文章

  1. oracle enterprise linux 5.7,Red Hat Enterprise Linux 5.7 安装Oracle数据库
  2. IAR stm32中函数硬是要加上声明才能编译通过,记录一下
  3. Mac iterm2 终端优化
  4. 如何点击按钮弹出弹框显示几秒_layer消息框显示在鼠标旁边
  5. 微信小程序实现时间戳转为时间格式
  6. java反向映射_opencv 直方图和直方图反向映射
  7. laravel-神奇的服务容器(转)
  8. 带头结点的链式表操作集
  9. pytorch得到中间层输出
  10. 数据库---查询操作
  11. 成功申请MVP,晒晒来自微软的奖品
  12. 15条SQLite3语句
  13. 吴恩达《机器学习》笔记
  14. HTK的Network把所有的NetNode对象chain,并重新排序
  15. 无水印好用Flash头像编辑器组件
  16. JavaScript下载后端返回的文件流
  17. j2ee使用struts实现用户的登陆及注册
  18. 嵌入式软件管培生每日总结-第6-7天
  19. 前几天在头条上收到一条私信,内容大致是这样的:“我学校比较垃圾,想自学 Java 可以吗?自学 Java 难吗?毕业后能找到一份 6k左右的工作吗?”
  20. PMP,项目经理职业生涯不可或缺

热门文章

  1. 打造新基建AI强大基石,百度智能云Techday首次公开数据众包硬核实力
  2. android模拟器 平安行,携手MuMu模拟器,PC端畅游平安京
  3. 进口破壁机比国产的好吗?
  4. 苹果健康的“人民战争”
  5. IPguard服务器无法启动排查
  6. 粒子物理蒙特卡罗模拟库Geant4之能谱制作
  7. 小技巧-i标签与em标签和b标签与strong标签的区别
  8. mysql增加一条学生记录_Mysql基本操作记录
  9. gltf模型和glb模型下载的网站
  10. 访问学者英语口语顺利通关秘诀