深分页怎样兼顾稳定顺序和跳页?
查看完整题解
参考回答
直接回答
连续翻页优先评估基于排序键的分页,用上一页最后记录作边界并配合匹配索引。要支持任意跳页时,可限制页深、缓存定位点,或先取窄索引中的键再取详情。
讲清原理
多个记录共享排序值时需唯一键做并列顺序。翻页期间插入和更新可能改变结果,接口要定义快照还是实时可变视图。
例子与易错点
按时间和 ID 排序时,两者一起放入游标。只传时间会跳过同秒剩余数据,单用 OFFSET 则可能扫描和丢弃大量记录。
上一页末行是 10:00 的 ID 3。下一页应先读同一时刻的 ID 2,再读 09:00 的 ID 1。
CREATE TABLE page_demo (
id INT PRIMARY KEY,
created_at DATETIME NOT NULL,
INDEX time_id (created_at, id)
);
INSERT INTO page_demo VALUES
(3, '2026-01-01 10:00:00'),
(2, '2026-01-01 10:00:00'),
(1, '2026-01-01 09:00:00');
SELECT id FROM page_demo
WHERE created_at < '2026-01-01 10:00:00'
OR (created_at = '2026-01-01 10:00:00' AND id < 3)
ORDER BY created_at DESC, id DESC
LIMIT 2;
相关题 · 第 69 题、第 103 题
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。