API做翻页的两种思路
转自: https://www.cnblogs.com/cgzl/p/10706881.html 在开发API的时候,有时候数据太多了,就需要分页读取。 基于偏移量的分页(Offset-based) 这种方式就是会提供一个每页笔数(page size)来定义返回条目的最大数,提供一个页数(page number)来表示从哪里开始读取数据。 例如: 1 SELECT * FROM "CampusResumes" ORDER BY "Name" DESC LIMIT 5 OFFSET 10; 这句话的意思就是从该表中读取数据,按照Name字段降序排序,从第10笔数据后开始读取,一共读取5笔(可能不足5笔)。 这就相当于page size = 5,page number = 3的分页读取。 Offset-based分页方式实现起来非常的简单,对用户来说体验也比较好。但是还有有一些劣势的: 对于大规模的数据集,效率不够高。 因为数据库需要进行count和skip操作。 如果数据经常发生变化,那么结果不可信。 在查询的时候如果插入或删除了数据,那么某条数据可能会出现两次或者翻页的时候越界了。 在分布式系统中实现起来略麻烦。 这种情况下,你可能需要扫描不同的数据碎片,然后才能得到想要的数据。 总体来说,当允许结果出现误差的时候,Offset-based分页还是很好用的。 基于游标的分页