mysql如何优化limit分页
MySQL 优化 LIMIT
分页的关键是使用索引,并且尽可能让 LIMIT
语句中的偏移量尽可能小。
- 确保查询中的
ORDER BY
字段已经建立了索引。 - 如果可能,使用索引的最左前缀。
- 避免使用
SELECT *
,而是只选择需要的列。 - 如果分页很频繁且偏移量很大,可以考虑使用“基于光标的分页”或“查询上一页的最大ID”的策略。
示例代码:
-- 假设有一个有序索引的表 `users`,字段 `id`, `name`, `age`
-- 优化前的查询
SELECT * FROM users ORDER BY id LIMIT 10000, 10;
-- 优化后的查询,使用索引来跳过前10000条记录
SELECT * FROM users
INNER JOIN (
SELECT id FROM users ORDER BY id LIMIT 10000, 10
) AS subquery ON users.id = subquery.id;
如果业务允许,可以考虑使用“基于光标的分页”:
-- 获取上一页的最大ID
SELECT * FROM users WHERE id < 最大ID ORDER BY id DESC LIMIT 10;
这样可以避免使用 LIMIT
进行偏移,提高分页的效率。
评论已关闭