Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

深分页怎样兼顾稳定顺序和跳页?

查看完整题解

参考回答

直接回答

连续翻页优先评估基于排序键的分页,用上一页最后记录作边界并配合匹配索引。要支持任意跳页时,可限制页深、缓存定位点,或先取窄索引中的键再取详情。

讲清原理

多个记录共享排序值时需唯一键做并列顺序。翻页期间插入和更新可能改变结果,接口要定义快照还是实时可变视图。

按时间和唯一 ID 排序,用上一页末行定位后续记录
按时间和唯一 ID 排序,用上一页末行定位后续记录

例子与易错点

按时间和 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 题

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。