后端开发-分页游标设计(解决大数据量分页查询时的性能问题)

适用场景/背景描述

  • 如果需要做分页查询
  • 且被查询的数据量很大,直接 limit offset 有可能会导致全表扫描或扫描前 n 项
    • 如果你用查询的字段不包含索引字段,那么会发生全表扫描
    • 如果你查询的字段包括索引字段,你仍然要扫描索引字段的前 n 项
  • 且客户端侧仅支持每次到下一页的查找,不支持跳转查找第几页
  • 且 order by 排序是以索引来排序

如果你遇到的是上方描述的场景,那么分页游标就是你很好的选择!

本质原理

一句话:原本的常规的分页查找,思路转变成利用索引条件和 limit 查找多少个数量来替代,来避免 offset 的性能瓶颈

简单举例子

如果你使用 limit offset:
比如你要一页一页的分页查找用户表数据,按照每页 10 条来查找,你查找第一页,能很快找到,因为 id 为主键索引,依据 B+ 树的二分查找特性

select * from t_user order by id limit 10;

…你一页一页的查找,然后你查找后头第 4 页,取 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcnull

您的打赏是我创作的动力之一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值