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

mysql超大分页问题处理~

    大家好,我是程序媛雪儿,今天咱们聊mysql超大分页问题处理。

超大分页问题是什么?

    数据量很大的时候,在查询中,越靠后,分页查询效率越低

例如

select * from tb_sku limit 0,10;
select * from tb_sku limit 9000000,10

    上面这条sql,需要查9000010条数据(9000010条数据需要被完整的扫描一遍),却只取最后10条返回,其他都会丢掉,查询代价太大!

在解决这个问题之前,我们先了解一下,什么是覆盖索引

覆盖索引

覆盖索引是指查询使用了索引,并且需要返回的列在索引中都能够找到

select * from tb_user where id = 1 ##覆盖索引

因为根据id查,所建立的聚簇索引的叶子节点存储着所有数据

select id, name from tb_user where name = 'Arm' ## 覆盖索引

因为根据name建立的二级索引,叶子节点志存着name和id,而查找的内容刚好是name和id

select id,name,gender from tb_user where name = 'Arm' ## 非覆盖索引

因为根据name建立的二级索引里没有gender,需要根据id再到聚簇索引中找gender,换句话说,需要回表查询

优化方案

我们在了解覆盖索引之后,针对

select * from tb_sku limit 9000000,10

这个sql语句,应该怎么优化呢?

思路:通过创建覆盖索引+子查询的形式进行优化

上面那个例子可以把sql改为

select *
from tb_sku t,(select id from tb_sku order by id limit 9000000,10)a
where t.id = a.id;

这种查询方式就可以避免回表查询,因为子查询中采用的是覆盖索引,已经包含了要查找的id,且id有序,因此可以快速跳到第9000000条数据并获取接下来的10个id,然后再根据id获取完整行的数据,这样节省了扫描前9000000条数据的时间,效率大大提升。

         欢迎大家关注我的微信公众号,程序媛雪儿,雪儿会定期在上面发布编程的知识碎片,也有雪儿博客地址,上面有详细系统的笔记,雪儿是全栈,但是公众号目前主要还是发后端的技术,以后可能也会涉及到一些前端的知识,我们下期见,拜拜~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LCM接口通讯说明
  • c++11,左值引用和右值引用,右值引用的作用
  • CTF学习笔记汇总(非常详细)零基础入门到精通,收藏这一篇就够了
  • Linux:基础
  • WPF的MVVM架构:如何通过数据绑定简化UI逻辑
  • 【JavaEE】springboot 入门——springboot简介
  • 运维.Linux.bash学习笔记.数组及其使用
  • java中创建对象地方式有哪几种?(面试高频)
  • “八股文”的江湖:助力、阻力还是空谈?深度解析程序员面试的敲门砖
  • 把本地项目推送到远程仓库
  • C# Solidworks二次开发------C#中的进度条
  • 某“新一线城市“前端面试,纯纯被恶心到了
  • 【数据结构】Java实现二叉搜索树
  • 【大模型系列篇】本地问答系统-部署Ollama、Open WebUI
  • 【MATLAB源码】机器视觉与图像识别技术(7)续---BP神经网络
  • 收藏网友的 源程序下载网
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 30天自制操作系统-2
  • CentOS 7 修改主机名
  • ECMAScript6(0):ES6简明参考手册
  • idea + plantuml 画流程图
  • IOS评论框不贴底(ios12新bug)
  • Nodejs和JavaWeb协助开发
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 计算机在识别图像时“看到”了什么?
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 利用jquery编写加法运算验证码
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 十年未变!安全,谁之责?(下)
  • 我看到的前端
  • 正则表达式小结
  • 终端用户监控:真实用户监控还是模拟监控?
  • 容器镜像
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​渐进式Web应用PWA的未来
  • ​马来语翻译中文去哪比较好?
  • (02)Unity使用在线AI大模型(调用Python)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (30)数组元素和与数字和的绝对差
  • (C语言)字符分类函数
  • (zt)最盛行的警世狂言(爆笑)
  • (分享)自己整理的一些简单awk实用语句
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (力扣题库)跳跃游戏II(c++)
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (五)MySQL的备份及恢复
  • (一)SvelteKit教程:hello world
  • (译)2019年前端性能优化清单 — 下篇
  • (转) 深度模型优化性能 调参
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Linq学习笔记