如何在mysql中实现分页查询_limit offset用法

来源:这里教程网 时间:2026-02-28 20:36:01 作者:

MySQL 中实现分页查询最常用的方式就是

LIMIT
OFFSET
组合,语法简单但需注意性能和边界问题。

基本语法:LIMIT + OFFSET

LIMIT
指定返回记录数,
OFFSET
指定跳过多少条记录。常见写法:

SELECT * FROM table_name LIMIT 10 OFFSET 20
:跳过前 20 条,取接下来的 10 条(即第 21–30 条)
等价简写:
SELECT * FROM table_name LIMIT 20, 10
(MySQL 支持,但可读性略差,不推荐用于复杂逻辑)

分页参数如何计算

假设每页显示 N 条,当前是第 P 页(从 1 开始计数),则:

OFFSET = (P - 1) * N
LIMIT = N
例如:第 5 页,每页 15 条 →
OFFSET = 4 * 15 = 60
LIMIT = 15

性能注意事项

OFFSET
很大时(如几万、几十万),MySQL 仍需扫描并跳过前面所有记录,导致慢查询:

避免
LIMIT 1000000, 20
这类深分页;可改用“游标分页”(基于上一页最后一条的主键或时间戳继续查)
确保
ORDER BY
字段有索引(尤其是配合分页的排序字段),否则排序成本高且无法利用索引加速偏移
WHERE
条件缩小数据集后再分页,比全表分页高效得多

实际分页示例(带排序和条件)

查用户表中状态为 1 的用户,按注册时间倒序,第 3 页(每页 10 条):

SELECT id, name, created_at 
FROM users 
WHERE status = 1 
ORDER BY created_at DESC 
LIMIT 10 OFFSET 20;

注意:

ORDER BY
必须存在,否则分页结果不稳定;
OFFSET
值由前端传入或后端计算得出,务必校验非负整数。

相关推荐