news 2026/7/7 18:26:56

Mysql大数据深分页速度慢优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mysql大数据深分页速度慢优化

Mysql: 8.0.29

数据量:628W条

主键字段:id

一、Mysql分页原理

示例语句: SELECT * FROM test_logistics_contract_info LIMIT 5000000,10;

PS1:理论上生产环境不禁止SELECT * ,哪怕会用到所有的字段,这里只是示例语句。

执行原理 :

先执行 SELECT * FROM test_logistics_contract_info LIMIT 5000010;放入Mysql内存中

再取最后的10条返回

效率:

分页越深,效率越低,如果取全表的最后10条,相当于全表扫描。

二、俩种SQL语句级别优化和效率对比

原版语句: 执行时间 7.338秒

优化语句一: 查询时间 0.143秒 比原版的零头还低

SELECT a.* FROM test_logistics_contract_info a INNER JOIN (SELECT id FROM test_logistics_contract_info LIMIT 500000,10) as b
on a.id = b.id

原理:利用 InnoDB 的回表机制,先拿所需要数据的主键,再用主键拿数据。

优化二:查询时间 0.0秒(纳秒级别了) 比原版的零头的零头还低

SELECT * FROM test_logistics_contract_info WHERE id >= 5066186 LIMIT 10;

原理:先拿到上次分页的最后一条数据id,然后用id精准定位数据的位置。

缺点:禁止跳页,每次都必须拿到上一页的最后一条数据的id

PS2:Mysql自增主键具有不连续性,用页数*每页条数得到的数字作为id是不准确的(比如物理删除的数据,或者批量添加数据)

PS3:Mysql还有唯一索引不唯一的特性( ^_^!!)

三、其他优化方式

1、禁止深分页(使用多)

某东、某宝的分页都限定了100页

2、用适合大数据分页的DB 存数据 (省心)

比如es(GB~TB级别) Hbase(PB级别)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 11:56:40

如何快速部署多平台文件传输工具:新手完整指南

如何快速部署多平台文件传输工具:新手完整指南 【免费下载链接】transfer 🍭 集合多个API的大文件传输工具. 项目地址: https://gitcode.com/gh_mirrors/tr/transfer 在当今数字化时代,文件传输工具已成为日常工作和学习中不可或缺的一…

作者头像 李华
网站建设 2026/7/7 17:25:48

频繁的文件安全警告?3招提升工作效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个办公效率优化工具,主要功能:1) 自动识别常用办公文件类型(如docx, xlsx等) 2) 智能记忆可信文件来源 3) 一键创建安全例外规则 4) 提供批量处理功能…

作者头像 李华
网站建设 2026/7/6 21:26:23

【Python大语言模型系列】新版Dify 开发自定义工具插件在工作流中直接调用(完整步骤)

这是我的第441篇原创文章。 一、引言 “工具插件” 指的是一个完整的项目,其中包含工具供应商文件、功能代码等结构。之前写过一个旧版dify开发自定义工具: 【Python大语言模型系列】Dify 开发一个自定义工具并在工作流中直接调用(完整案例&…

作者头像 李华
网站建设 2026/7/7 3:46:28

Crypto-JS实战指南:轻松实现前端数据安全加密

Crypto-JS实战指南:轻松实现前端数据安全加密 【免费下载链接】crypto-js 项目地址: https://gitcode.com/gh_mirrors/cry/crypto-js 在当今数据安全日益重要的时代,前端加密已成为Web开发中不可或缺的一环。Crypto-JS作为一款功能强大的JavaScr…

作者头像 李华
网站建设 2026/7/7 15:47:51

终于让 Dify Agent 在QQ、微信、飞书、钉钉里自动回复了

想让你精心调教的 Dify Agent 走出网页,直接在微信、QQ、飞书里帮你干活?用 LangBot 配合 Dify,十分钟就能搞定。 为什么是这对组合? LangBot 是一个开源的多平台聊天机器人框架,支持国内主流 IM(QQ、微信…

作者头像 李华
网站建设 2026/7/7 10:23:34

C语言的分支和循环语句(二)

switch语句中的default:在执行switch的语句时,我们会遇到switch后面的表达式的值无法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加default子句。default的表达式:switch(expression){case valu…

作者头像 李华