分页查询通过LIMIT和OFFSET限制数据量,减轻系统压力;使用ORDER BY确保顺序一致,并为大数据量采用索引优化或游标分页提升性能。

在处理大量数据时,MySQL分页查询是提高性能和用户体验的关键手段。通过限制每次返回的数据量,避免一次性加载过多记录,减轻数据库和前端的压力。最常用的实现方式是使用 LIMIT 和 OFFSET 关键字。
基本语法结构
MySQL分页的核心语法如下:
SELECT * FROM table_name LIMIT size OFFSET offset;
其中:
- LIMIT size:指定每页显示的记录数
- OFFSET offset:跳过前面多少条记录(从第0条开始)
例如,每页显示10条,查询第一页:
SELECT * FROM users LIMIT 10 OFFSET 0;
查询第二页:
SELECT * FROM users LIMIT 10 OFFSET 10;
也可以简写为:
SELECT * FROM users LIMIT 10, 10; -- 跳过10条,取10条
计算分页参数
实际开发中,通常根据当前页码(page)和每页大小(size)动态计算OFFSET值:
OFFSET = (page - 1) * size
比如当前是第3页,每页10条:
OFFSET = (3 - 1) * 10 = 20
对应SQL语句为:
SELECT * FROM users LIMIT 10 OFFSET 20;
优化大数据量下的分页性能
当数据量非常大时,如 LIMIT 100000, 10,MySQL仍需扫描前10万条记录,性能会明显下降。可采用以下优化方法:
- 为排序字段建立索引,尤其是与WHERE、ORDER BY相关的列
- 使用主键或唯一索引进行分页,避免OFFSET,例如:
SELECT * FROM users WHERE id > last_seen_id ORDER BY id LIMIT 10;
这种方式称为“游标分页”或“键集分页”,适合实时性要求高的场景,如微博、消息流。
结合ORDER BY使用
为了保证分页结果顺序一致,建议始终配合 ORDER BY 使用:
SELECT * FROM users ORDER BY created_time DESC LIMIT 10 OFFSET 20;
否则,数据库可能返回无序结果,导致同一条数据出现在多个页面中。
基本上就这些。掌握LIMIT和OFFSET的用法,再根据数据规模选择是否优化,就能高效实现MySQL分页查询。










