← 全部文章

技术与生活 / 一篇记录

分页的第一步,是确定什么叫“下一页”

分页需要稳定的排序规则,否则相邻页可能重叠或遗漏。

数据持续变化时,按偏移量切片可能在两次请求之间产生重复或遗漏。即使静态数据也需要明确排序,否则数据库没有义务按固定顺序返回行。

操作与观察

查询示例以 SQLite 为例;notes 为测试表,包含 id、title、score、category、created_at 字段。

SELECT id, title FROM notes ORDER BY id LIMIT 2 OFFSET 2;

比较第一页和第二页的记录,确认没有重复。

对唯一主键排序,再测试相邻页边界。对于顺序向后浏览的大数据集,可以评估按最后一个键继续查询,但要先定义新增和删除数据的处理规则。

使用键集分页时,最后一个键应该来自实际返回结果,并与排序方向一致。如果排序条件包含多个字段,游标也需要保留足够信息,不能只传一个不唯一的时间值。

别遗漏这条边界

大量深分页可能代价较高,连续浏览可考虑按最后一个主键继续取数。

参考:SQL 文档。

搜索文章

输入关键词,找回一篇记录。