当前位置: 首页 > news >正文

mysql大数据量分页查询

一、什么是‌MySQL大数据量分页查?

MySQL大数据量分页查‌是指在使用MySQL数据库时,将大量数据分成多个较小的部分进行显示,以提高查询效率和用户体验。分页查询通常用于网页或应用程序中,以便用户能够逐步浏览结果集。

二、为什么要用MySQL大数据量分页?

随着业务的增长,数据库的数据也呈指数级增长,之前所写的代码mysql的分页都是采用的limit方式进行,这种方式固然代码比较简单,但数据量大了之后真的是查的慢。

所以就用到mysql大数据量后的分页查询方法及其优化技巧,不但提高性能还能增加用户体验。

1.直接使用数据库提供的SQL语句

SELECT *FROM 表名称 LIMIT M,N

Limit限制的是从结果集的M位置处取出N条输出,其余抛弃,语句的查询时间与起始记录的位置成正比,适用于数据量较少的情况(元组百/千级),全表扫描,速度会很慢 且有的数据库结果集返回不稳定

2.建立主键或唯一索引, 利用索引

SELECT id FROM 表名称 WHERE id>(pageNum*10)LIMIT M

适用于数据量多的情况(元组数上万),索引扫描,速度会很快,通过主键或者索引的方式去查询可能会出现一个致命的问题就是数据查询出来并不是按照主键或者索引排序的,所以会有漏掉数据的情况

3.基于索引再排序

SELECT *FROM 表名称 WHERE id_pK >(pageNum*10) ORDER BY id_pK ASC LIMIT M

适用于数据量多的情况(元组数上万). 最好ORDER BY后的列对象是主键或唯一索引,使得ORDERBY操作能利用索引被消除但结果集是稳定的,索引扫描,速度会很快,这种方式会让我们的查询效率得到更大的提升

4.基于索引使用prepare

PREPARE stmt_name FROM SELECT * FROM 表名称 WHERE id_pk
ORDER BY id_pK ASC LIMIT M

第一个问号表示pageNum,第二个问号表示每页元组数

适用于大数据量,索引扫描,速度会很快。prepare语句又比一般的查询语句快一点

 5.利用MySQL支持ORDER操作可以利用索引快速定位部分元组,避免全表扫描。

SELECT * FROM 表名 WHERE id>=780000 ORDER BY id ASC LIMIT 0,20

可以发现这种效率和上面方法的效率差不多,因为效率的提升的原因都是走id主键索引

6.利用"子查询/连接+索引"快速定位元组的位置,然后再读取元组 

SELECT * FROM 表名 WHERE id <= (SELECT id 表名 table
ORDER BY id desc
LIMIT ($page-1)*$pagesize
ORDER BY id desc
LIMIT $pagesize

效率较低

总结:

如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键!

相关文章:

  • PHP 中的除以零错误
  • 基于 Filebeat 的日志收集
  • Python 鼠标轨迹 - 防止游戏检测
  • Django开发入门 – 3.用Django创建一个Web项目
  • 接入 deepseek 实现AI智能问诊
  • 新数据结构(7)——Object
  • HCIA项目实践--静态路由的拓展配置
  • 消息中间件:RabbitMQ镜像集群部署配置全流程
  • RIME-CNN-SVM故障诊断
  • 在mac中安装Colima使用docker(替代Docker Desktop)
  • MapReduce到底是个啥?
  • 无人机 ,遥控器与接收机之前的通信
  • Python 调用 Azure OpenAI API
  • 浅谈Java Spring Boot 框架分析和理解
  • 掌握正则表达式_模式匹配的艺术
  • 【实测】用全志A733平板搭建一个端侧Deepseek算力平台
  • DeepSeek 助力 Vue 开发:打造丝滑的步骤条
  • 渗透利器:YAKIT 工具-基础实战教程.
  • TCP/IP 协议
  • #渗透测试#批量漏洞挖掘#29网课交单平台 SQL注入
  • 中国至越南河内国际道路运输线路正式开通
  • 工人日报:“鼠标手”被纳入职业病,劳动保障网越织越密
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 马上评丨未成年人“擦边”短视频岂能成流量密码
  • 重庆一高校75万采购市价299元产品?工作人员:正在处理
  • 汉斯·季默:不会指挥的声音工程师终成音乐“大神”