MySQL分页查询最常用方法是LIMIT和OFFSET,语法为SELECT * FROM table_name LIMIT offset, row_count或LIMIT row_count OFFSET offset;需校验页码与每页数量,避免深分页性能问题,务必配合ORDER BY使用以保证结果稳定。

MySQL 分页查询最常用、最基础的方法是使用 LIMIT 和 OFFSET 子句,适用于大多数中小型数据量场景。
标准写法为:
SELECT * FROM table_name LIMIT offset, row_count;
或等价写法:
SELECT * FROM table_name LIMIT row_count OFFSET offset;
其中:
• offset 表示跳过的记录数(从 0 开始)
• row_count 表示要返回的记录条数
例如:查第 2 页、每页 10 条,就是跳过前 10 条,取接下来的 10 条:
SELECT * FROM users LIMIT 10, 10; 或 SELECT * FROM users LIMIT 10 OFFSET 10;
前端传入页码 page(从 1 开始)和每页数量 size,后端需转换为 offset:
• offset = (page − 1) × size
• 比如 page=3、size=20 → offset = 40 → LIMIT 40, 20
注意:
• 页码必须校验是否 ≥ 1,size 建议限制合理范围(如 1–100)
• 不建议直接用用户输入拼 SQL,应使用参数化查询防注入
当 offset 很大(如几万、几十万)时,MySQL 仍需扫描并跳过前面所有行,性能急剧下降。
可考虑以下改进:
• 对排序字段(如主键 id)加索引,确保 ORDER BY + LIMIT 能高效执行
• 使用“游标分页”(基于上一页最后一条的 id 继续查),例如:
SELECT * FROM users WHERE id > 12345 ORDER BY id LIMIT 20;
• 避免 SELECT *,只查必要字段减少 I/O
LIMIT 本身不保证顺序,若未指定 ORDER BY,每次查询结果可能不同。
务必搭配确定性排序,例如:
SELECT id, name FROM users ORDER BY id ASC LIMIT 20 OFFSET 40;
如果按非唯一字段排序(如 create_time),建议加上主键作为第二排序条件,避免因时间重复导致分页错乱:
ORDER BY create_time DESC, id DESC
以上就是如何在mysql中进行分页查询_mysql分页查询基础方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号