开发避坑指南(34):mysql深度分页查询优化方案

问题语句

SELECT
	*
FROM
	t_order_log l
WHERE
	1 = 1
AND l.create_time >= '2024-08-28'
AND l.create_time <= '2024-09-04 23:59:59'
LIMIT 10000,10

上述查询sql,即使create_time字段已建立索引,但偏移量达到几十万时候,查询耗时将近1分钟,还是很久。

优化方案

方案1

根据条件先查询满足条件的的记录的id,再根据id查询对应的数据,优化后耗时降到3秒左右。如下:

select 
*
from t_order_log inner join (
	select id from t_order_log where 1 = 1
	AND create_time >= '2024-08-28'
	AND create_time <= '2024-09-04 23:59:59'
	limit 10000,10
) 
l using (id)

方案2

限定只能查短时间内的日志,避免大的偏移量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帧栈

您的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值