API 分页,别只盯着“每页几条”。真正的区别是:下一批数据从哪儿接着拿。六种常见做法,拆成三组就清楚了。 ① 按位置找:偏移量与页码。 偏移量说“跳过多少… · @BaiBtw · TwKit
@BaiBtw
API 分页,别只盯着“每页几条”。真正的区别是:下一批数据从哪儿接着拿。六种常见做法,拆成三组就清楚了。 ① 按位置找:偏移量与页码。 偏移量说“跳过多少条,再取多少条”;比如从第0条开始取3条。页码说“第2页,每页3条”。两种都直观、好实现,但翻得越深,扫描和跳过记录的成本可能越高。换成页码,不等于把这个性能问题变没了。 ② 按标记接:游标与键集。 游标把读到的位置交给客户端,常见形式是指向某条记录的编码字符串,下次带回来继续取。键集则直接用键筛选,比如取某个 ID 之后的3条。两者都能避开大偏移量的跳过成本;游标的实现更复杂,键集还依赖唯一、带索引的键,不能只换个参数名就算完事。 ③ 按时间圈范围,或把方法组合起来。 时间分页用开始、结束时间取一段记录,适合按时间组织的数据;前提是时间戳可靠、一致,不能把“用了时间”当成绝不漏数据的保证。混合分页则可以先圈时间范围,再带游标继续滚动,把时间筛选和位置续接放在一起。灵活性更高,设计复杂度也跟着上来。 所以这些名字不是六种互斥魔法:页码和偏移量偏向位置,游标和键集关注续接点,时间范围还可以与游标配合。大数据集下,省掉跳过旧记录的工作,和把边界定义清楚,是两件都绕不过去的事。
曝光 20 · 评论 2 · 点赞 0 · 书签 0
查看原帖