问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

在MySQL中,如何使用覆盖索引优化limit分页查询?

提问网友 发布时间:2024-10-19 11:11
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2024-10-23 20:09

在MySQL中,如何使用覆盖索引优化limit分页查询?


MySQL Limit 语法格式:分页查询时,我们会在LIMIT 后面传两个参数,一个是偏移量(offset),一个是获取的条数(limit)。当偏移量很小时,查询速度很快,但是当 offset 很大时,查询速度就会变慢。例如,假设有一张 300w 条数据的表,对其进行分页查询,可以看到,随着偏移量(offset)的增加,查询时间变得越长。对于普通的业务而言,超过1秒的查询是绝对不可以忍受的。上例中,当偏移的起始位置超过10万时,分页查询的时间超过61秒。当偏移量超过100万时,查询时间竟然长达273秒。


从上例中,我们可以总结出:LIMIT分页查询的时间与偏移量值成正比。当偏移量越大时,查询时间越长。这种情况,会随着业务的增加,数据的增多,会越发的明显。那么,如何优化这种情况呢?答案是,覆盖索引。


对于LIMIT分页查询的性能优化,主要思路是利用覆盖索引字段定位数据,然后再取出内容。不使用覆盖索引,查询耗时情况如下:



    子查询分页方式,首先通过子查询和覆盖索引定位到起始位置ID,然后再取所需条数的数据。

缺点是,不适用于结果集不以ID连续自增的分页场景。在复杂分页场景,往往需要通过过滤条件,筛选到符合条件的ID,此时的ID是离散且不连续的。如果使用上述的方式,并不能筛选出目标数据。当然,我们也可以对此方法做一些改进,首先利用子查询获取目标分页的ids,然后再根据 ids 获取内容。然而,并不尽人意。我们得到一个错误提示。错误信息的含义是,子查询不能有 limit操作。于是,我们对SQL进行了改造,对子查询包了一层。


执行成功,且查询效率很高。但是,这种写法非常繁琐。我们可以使用下面的join 分页方式,达到相同的优化效果。实际上,两者的原理是相同的。



    join 分页方式,通过自连接与join定位到目标 ids,然后再将数据取出。在定位目标 ids时,由于 SELECT的元素只有主键 ID,且status 存在索引,因此MySQL只需在索引中,就能定位到目标 ids,不用在数据文件上进行查找。因而,查询效率非常高。

如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作。简单的说,覆盖索引覆盖所有需要查询的字段(即,大于或等于所查询的字段)。MySQL可以通过索引获取查询数据,因而不需要读取数据行。


覆盖索引的好处:



    减少I/O操作,提高查询效率。
    减少CPU资源的消耗。

通过利用覆盖索引,能极大的优化了Limit分页查询的效率。在真正的实践中,除了使用覆盖索引,优化查询速度外,我们还可以使用 Redis 缓存,将热点数据进行缓存储存。背景描述的事故,我们考虑了时间成本和业务复杂度后,最后采取的是*分页和增加缓存。所谓的*分页,即在不影响阅读体验的前提下,只允许用户可以查看前几千条的数据。经测验,偏移量较小时的查询效率较令人满意,查询效率接近使用覆盖索引查询的速度。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

日语翻译资格证书报名条件 感冒发烧,你想吃啥? 我想问下,想趁着双11装台7900X3D主机,主板怎么选? 日用瓷器彩绘与烤花的定义 葛洲坝600068行不行啊?这K线走势好像要调整似的,要不要先出来一会? 考研报名一般什么时候缴费? 葛洲坝股票行情分析预测 2024年吉林考研报名网上缴费怎么交 600068葛洲坝节后走势如何? 葛洲坝中长期后市怎样?拜托各位大神 兴平马嵬驿怎么走,咸阳旅游马嵬驿路线 杨贵妃墓要门票吗,马嵬驿景区 门票 原油罐车在没有蒸洗的情况下,维修焊接过程中爆炸对方单位有责任吗 淘宝上报名活动为什么总是失败呢? 纯棉怎么造句 天猫店铺一般违规扣2分有什么影响? ...错误被淘宝售假处罚扣了2分,如果我等年底清零了能报天天特价么... 关于默认共享的问题 为什么电脑开机一段时间就共享不了了, 但是重启之后又可以,过一段时间... 油罐车罐体可以贴公司字样吗 黑色的车贴什么颜色的贴膜 某混凝土实验室配合比为1:3.25比4.45等于水泥比沙比时水灰比等于0.6每... 本人姓王,老婆姓李。儿子出生月2008年阳历6月5日11点15分,现想给孩子... 狙击精英 extract the agen第五节怎么过 混凝土实验室配合比1:2,12:4.37,水灰比w/c=0.62,每立方米混凝土水泥用量... 狙击精英1第七关攻略介绍_狙击精英1第七关攻略是什么 ...把我们的奖金变成了延时加班费和奖金!这合法吗? 《天娱传媒》公司,有童星吗? 怎么样才可以当童星呢?我想上天娱传媒 喻梦传媒网络娱乐公司的童星有机会拍戏吗 2013年几月 美亚和天娱传媒才开始招童星呢 跪求 谢谢 和平精英小丑鱼套装值得入手吗?海洋军需小丑鱼套装获取方法[视频] 悬浊液是什么样的混合物 和平精英小丑鱼套装彩蛋是什么?深海小丑鱼套装彩蛋汇总[视频] 悬浊液是 悬浮在液体里形成的物质,又叫做 编写程序,用公式π/4=1-1/3+1/5-1/7+...计算π的近似值,直到最后一项的... ...求π的近似值,直到最后一项的绝对值小于10-6 ,下面代码哪里错了... ...1/3+1/5-1/7+……,直到最后一项的绝对值小于10-6为止. ...1/3+1/5-1/7+···到最后一项的绝对值小于10^(-6)为止 ...求π的近似值,直到最后一项的绝对值小于10-6为止;
Top