问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

别再用 offset 和 limit 分页了,性能太差!

发布网友 发布时间:2024-10-04 09:12

我来回答

1个回答

热心网友 时间:2024-10-05 16:38

在面对数据库性能优化挑战的今天,我们已不再能够忽视优化 API 和数据端点以确保浏览海量数据时的可靠性和效率。对于后台开发和数据库架构师而言,正确分页数据库数据是至关重要的技能。

传统的分页方法,如使用 OFFSET 和 LIMIT,虽然对于小型项目和数据量不大的场景尚可使用,但在处理大规模数据时,这种方式变得低效且不可靠。当数据库中的数据量超过服务器内存的存储能力,对所有数据进行分页时,问题尤为凸显。

每次收到分页请求时,数据库需要进行全表扫描,这是一种已知最慢的扫描方式,涉及大量磁盘 I/O 和内存传输开销。例如,对于拥有1亿个用户的数据库,OFFSET 为5千万时,数据库需要获取所有这些记录(包括大量不必要的数据),将其加载到内存中,然后再获取指定的20条结果。这使得获取一页数据的成本变得非常高昂。

考虑一个简单的例子:db-fiddle.com/f/3JSpBxV...

在该例子中,左边的 Schema SQL 插入了10万行数据,而右边的查询采用了两种不同的方式。仅需点击顶部的 Run 即可比较它们的执行时间。第一个查询的运行时间至少是第二个查询的30倍。数据量越大,这种差异就越明显。

为了解决这个问题,可以采用基于指针的分页方法。这种方法使用本地保存的上一次接收到的主键(通常是 ID),而不是 OFFSET 和 LIMIT。通过明确告知数据库最新行的位置,数据库可以准确地从哪里开始搜索,无需考虑目标范围之外的记录。这极大地提高了查询效率。

基于游标的分页在某些情况下可能无法满足特定条件,如没有唯一序列字段的情况。此时,应权衡每种解决方案的利弊,并考虑执行哪种查询。对于处理大量数据的查询操作,Rick James 的文章提供了更深入的指导。

当数据库表不包含主键,例如在多对多关系的场景中,可以考虑使用传统的 OFFSET/LIMIT 方式,尽管这可能引入潜在的慢查询问题。建议在需要分页的表中使用自动递增的主键,即使只是为了分页操作。通过这种方式,可以确保在处理大规模数据时,数据库性能得到优化,为高效的数据检索提供坚实的基础。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年欧洲杯赛程表 德国欧洲杯足球赛2024赛程时间表 勇者斗魔王勇者斗恶龙12Gameboy游戏1中最后魔王变身后怎么打2中什么武... 电脑开机十秒技巧怎样让电脑开机速度变快 完美世界手游熊猫哪里抓完美国际熊猫是怎么得的 ...每一关跳旗杆的时候怎么才能跳到满分我每次都只能跳到 ip11和ip11pro区别 请问;谁知道SJ-M里面有一个叫基_什么? 智齿疼一定要拔吗 大师们帮我算算我的命数!不胜感激~ 怎样选择评估公司 Could not lower the asynch I/O limit "什么原因 WARNING:Could not lower the asynch I/O limit 什么原因 求火影忍者里各村护额标志及图片 民法典规定赡养父母的法律规定是什么 夏天太热的句子发朋友圈 ...卖了一个游戏号 买家已经付款 游戏号已经到了他的手里 钱我没有收... 交易猫为什么说1小时后钱到账,可是一天过去,都没到,我是不是被骗了... ...号,交易成功后,把钱提了卡上,客服说俩个小时到账,然后没有到,一问... 举办奥运会是多少少人的梦想啊,你知道第29届运动会是在多少年?在什么国... ...删除页眉横线后,还有一排空格怎么解,不是页眉边距,顶端对齐也没用... ...删除后保存文档再打开还有,请问高手,怎么去除??? "会议是在酷热的气温中召开的"修改语病 怎样在EXCEL中高亮显示当前选中单元格所在的行和列? excel表中的数字都是灰色的怎么回事 注册广西农信需要什么 为何我的电脑打不开QQ空间的相册? 雪纺衫怎么搭配好看(雪纺衫的搭配技巧推荐) 联通包晚间流量是当月生效吗 山西省运城市夜间流量包怎么开 512防空警报几次 徐建新纵横古今篆心声 徐建新研究成果 徐建新的个人介绍 王梦石的得意弟子 滇红大金针口感苦涩,有些滇红茶为什么特别甜? p2p神器有哪些版本 无限制搜索神器最新版是什么? Vivo手机如何关闭5G网络切换成4G 演员迪丽热巴有哪些出圈的红毯造型? 迪丽热巴有哪些令人惊艳的红毯造型? 迪丽热巴有哪些令人惊艳的礼服造型? windows phone系统比较好的手机 在一千五百元到两千的~ 谢谢各位啊 献给姐姐的生日祝福语 赡养父母包括什么内容,有哪些? 了解一下赡养义务的具体内容有哪些呢 上海人骄傲的地方是什么? 形容天气炎热的句子 形容天气炎热的句子有哪些呢 关于子女赡养父母有关规定有什么内容 子女不继承遗产的不赡养老人可以吗 小爱同学一直提示开小差