LIMIT是MySQL分页查询核心语法,支持LIMIT n和LIMIT offset,n两种形式;分页公式为LIMIT (page-1)*size, size;大offset导致性能下降,需配合ORDER BY使用并建议加主键避免重复排序。

在 MySQL 中,LIMIT 是实现分页查询最直接、最常用的方式,它控制返回结果的行数。掌握它的基本用法,是写好分页 SQL 的第一步。
LIMIT 的两种基本写法
LIMIT 支持两种语法形式:
-
LIMIT n:只取前 n 条记录,等价于
LIMIT 0, n - LIMIT offset, n:跳过前 offset 条,再取 n 条(注意:offset 从 0 开始计数)
分页查询怎么写(第 page 页,每页 size 条)
假设当前要查第 3 页,每页显示 10 条数据:
- 起始位置(offset)= (page − 1) × size = (3 − 1) × 10 = 20
- SQL 写成:
SELECT * FROM table_name LIMIT 20, 10
通用公式就是:LIMIT (page-1)*size, size
为什么 offset 越大,查询越慢?
MySQL 执行 LIMIT 10000, 20 时,并不是直接跳到第 10001 行,而是先扫描并丢弃前 10000 行,再取后 20 行。数据量大、页码靠后时,性能明显下降。
- 优化思路:用“游标分页”(基于上一页最后一条记录的主键/时间戳继续查),避免大 offset
- 简单场景下,可加复合索引覆盖排序字段 + 查询条件,减少回表
配合 ORDER BY 使用才可靠
LIMIT 单独用在无序结果上,每次执行可能返回不同行(因存储引擎顺序不固定)。分页必须搭配 ORDER BY:
- 正确:
SELECT * FROM user ORDER BY id LIMIT 20, 10 - 错误:
SELECT * FROM user LIMIT 20, 10(结果不可预测)
如果排序字段有重复值,建议加上主键作为第二排序条件,确保顺序唯一,例如:ORDER BY create_time DESC, id DESC










