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

编程 网站建设遵义网站建设服务

编程 网站建设,遵义网站建设服务,wordpress 用户是否登陆,wordpress获取所有标签页大家好,我是程序媛雪儿,今天咱们聊mysql超大分页问题处理。 超大分页问题是什么? 数据量很大的时候,在查询中,越靠后,分页查询效率越低 例如 select * from tb_sku limit 0,10; select * from tb_sku lim…

    大家好,我是程序媛雪儿,今天咱们聊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条数据的时间,效率大大提升。

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

http://www.yayakq.cn/news/162011/

相关文章:

  • 网站的网站维护的原因蓟县网站制作
  • 青岛网站排名方案免保证金入驻电商平台
  • 塘沽做网站公司百度小说风云榜首页
  • 宣传网站怎么做顺德网站制作案例价格
  • 网站域名被注册photoshop设计一个精美的网站主页
  • 个人网站页面模板下载安装百度一下
  • 广州 网站制ui设计主要做什么
  • 网站获取客户信息需要备案吗网站建设负责传资料不
  • 长沙网站排名团队社区网站建设公司
  • html格式的网站地图百度推广一条资源多少钱
  • 太原手机网站开发0基础学网站开发
  • 网站建站 用户注册做哪个网站的直播好
  • 北京市建设质量监督网站网站开发公司
  • 深圳门户网站网站建设比较合理的流程
  • 百度容易收录哪些网站合肥营销型网站
  • 哪个网站可以接程序项目来做aidesign官网
  • 蚌埠企业网站建设套餐微信公众平台 网站开发
  • 免费虚拟服务器佛山seo优化排名推广
  • 小型手机网站建设个人网页设计大全
  • 顺义重庆网站建设招聘 网站建设
  • 建设银行手机查询网站云南网爱我国防知识竞赛
  • 汕头市国外网站建设公司python开发微信小程序教程
  • 网站建设的前途宠物电商网站模板
  • 建设一个怎样的自己的网站营销活动方案内容
  • 网站改版重新收录住房与城乡建设部网站EPC
  • 网站建设分工方案购物网站建设合同
  • 深圳网站建设公司 评论宁波男科医院哪家比较好
  • 网站建设与维护参考文献静态网站开发工具有哪些
  • 企业网站建设总体构架个人博客网站总结
  • 怎么网站制作广东省网站建设公司排名