贝利信息

SQL LIMIT 优化的几种常见方式

日期:2026-01-19 00:00 / 作者:舞夢輝影
深分页性能差因需扫描跳过offset行;优化核心是减少扫描范围,常用游标分页、延迟关联、覆盖索引及业务层限制。

MySQL 中 LIMIT offset, size 在深分页(比如 LIMIT 1000000, 20)时性能急剧下降,根本原因是 MySQL 需要先扫描并跳过前 offset 行,再取后续数据——即使只返回 20 行,也可能扫描上百万行。优化核心是**减少扫描范围**,而不是“跳着走”。以下是几种经生产验证的常用方式:

游标分页(基于值的分页)

适用于顺序浏览场景(如信息流、日志翻页),要求排序字段有唯一性(如主键 idcreated_at + id 组合),且已建索引。

延迟关联(子查询定位主键)

当必须支持任意页码跳转(如后台管理),且无法改用游标时,用覆盖索引快速

拿到 ID,再回表取全量字段。

覆盖索引 + 显式字段选择

让查询完全在索引中完成,避免回表。适合 SELECT 字段固定、数量不多的分页场景。

业务层兜底与限制

技术优化之外,合理约束使用方式可大幅降低风险。