彻底搞明白大数据量下Mysql的分页优化

当面临大数据量分页查询时,常规的`LIMIT`分页方式效率低下。本文探讨了两种优化方法:延迟关联和书签方式。延迟关联通过覆盖索引提升查询速度,而书签方式适用于ID自增场景,存储上次查询的最大ID以加速后续分页。这两种方法能显著提高分页查询的性能。
摘要由CSDN通过智能技术生成

1.背景

大家都知道分页,那么我们这里肯定讨论的不是一般的情况,一般的情况我们利用limit分页,或者java代码内存分页都可以解决。

如果数据量非常大,如何解决分页呢?比如下面的SQL。

select * from user where type=0 order by id limit 1000000,100

上面的sql需要查询100条数据,但是是从第100W条开始,mysql会需要遍历跳过前面的100W条,然后从100W条开始,获取100条记录返回,101,102,103......很明显,前面的无效数据没有必要遍历查询的。

2.优化

 

2.1延迟关联

比如测试表里面有3W多数据,量不大,我们看一下效果,常规的分页语句如下面的SQL语句:

SELECT user_id,activity_id,equity_id,gift_no FROM account_assets_0000 order by update_time limit 30000,10

 

基本查询耗时在0.5s左右,第一次在1s左右,因为后面的查询有缓存。

利用延迟关联,原理是利用覆盖索引加速查询,优化后SQL如下:

SELECT user_id,activity_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值