我正在研究分页,我有一些问题。
我认为基于光标的要复杂得多,这使得基于偏移的分页更理想。只有以实时数据为中心的系统才需要基于光标的分页。
光标分页最常用于实时数据,因为添加新记录的频率很高,而且在读取数据时您通常会首先看到最新的结果。在不同的场景中,偏移量和游标分页最有意义,因此它将取决于数据本身以及添加新记录的频率。查询静态数据时,仅性能成本可能不足以让您使用游标,因为随之而来的复杂性可能超出您的需要。
引自这篇很棒的博客文章,快乐编码!
另外,请检查一下:
分页是解决这个问题的方法,它确保服务器只发送小块的数据。基于光标的分页是我们在编号页面上推荐的方法,因为它消除了跳过项目和多次显示同一项目的可能性。在基于游标的分页中,使用常量指针(或游标)来跟踪应从数据集中的何处获取下一个项目。
此解释来自 Appolo GraphQL 文档。
两种方法有什么区别?
差别很大。一种使用偏移量进行分页,另一种使用游标进行分页。两种方法都有多种优点/缺点。例如,偏移分页允许您跳转到任何页面,而在基于光标的分页中,您只能跳转到下一页/上一页。
底层的实现也有很大的区别。 Offset 很可能必须加载从第一页到您想要获取的页面的所有记录。有一些技巧可以避免这种情况。
有关更多优点和缺点,我建议阅读文章。
基于游标的分页的最佳用例?
如果您使用关系数据库并拥有数百万条记录。查询高 Offset 可能会花费大量时间/超时,而游标分页性能会更高。
基于光标的分页可以转到特定页面吗?
不,这是该方法的缺点之一。
基于光标的分页可以返回上一页吗?
提供两个光标作为响应是一种非常常见的技术,一个包含上一页,另一个包含下一页。如果是这种情况,您可以转到上一页。否则,你不能。
两者之间有性能差异吗?
是的!请参阅我上面的评论。
嗨,我想问在基于游标的分页中,常量指针(或游标)用于跟踪数据集中应从中获取下一个项目的位置,但如果具有该常量指针的记录已从数据库中删除会发生什么以及有什么方法可以防止这种情况发生