优化分页中的偏移量
背景和问题
在数据量较大的情况下,使用 LIMIT
偏移量会导致查询效率低下。例如,获取第 101 页的数据,每页 50 条记录时,查询语句如下:
SELECT * FROM articles ORDER BY id LIMIT 50000, 50;
这种查询会读取 50050 条数据,并丢弃前 50000 条,只返回后 50 条。随着页码增大,查询的效率会显著降低。
优化思路
通过在 WHERE 子句中引入条件 WHERE id > max_id,可以避免大偏移量的问题,使得 LIMIT 的偏移量始终为 0。
-- 初始查询获取第一页
SELECT * FROM articles ORDER BY id LIMIT