MySQL 大分页 LIMIT 优化一例
现象
管理端列表 LIMIT 100000, 10 耗时 3s+。
原因
MySQL 需要扫描并丢弃前 10 万行。
方案
用上一页末尾 ID 做游标(keyset 分页):
SELECT * FROM t WHERE id < #{lastId} ORDER BY id DESC LIMIT 10;响应恢复到毫秒级。
管理端列表 LIMIT 100000, 10 耗时 3s+。
MySQL 需要扫描并丢弃前 10 万行。
用上一页末尾 ID 做游标(keyset 分页):
SELECT * FROM t WHERE id < #{lastId} ORDER BY id DESC LIMIT 10;响应恢复到毫秒级。
评论 · 0 条