偏移分页与光标分页



我正在研究分页,我有一些问题。

  1. 两个approche有什么区别?
  2. 基于游标的分页的最佳用例?
  3. 基于光标的分页可以转到特定页面吗?
  4. 基于游标的分页可以返回到上一页吗?
  5. 两者之间是否有任何性能差异?

我的想法

我认为基于游标要复杂得多,这使得基于偏移量的分页更可取。只有以数据为中心的实时系统需要基于游标的分页。

由于添加新

记录的频率,并且由于在读取数据时,您经常首先看到最新结果,因此光标分页最常用于实时数据。在不同的情况下,偏移量和游标分页最有意义,因此它将取决于数据本身以及添加新记录的频率。查询静态数据时,仅靠性能成本可能不足以使用游标,因为游标带来的增加的复杂性可能超过您的需要。

引用自这篇很棒的博客文章,快乐编码!

另外,看看这个:

分页是此问题的解决方案,可确保服务器仅以小块发送数据。基于游标的分页是我们推荐的编号页面方法,因为它消除了跳过项目和多次显示同一项目的可能性。在基于游标的分页中,常量指针(或游标)用于跟踪应从数据集中的哪个位置提取下一个项目。

这个解释来自 Appolo GraphQL 文档。

这篇文章解释了它们之间的区别。

两种方法有什么区别?

差别很大。一个使用偏移量进行分页,另一个使用游标进行分页。这两种方法都有多种优点/缺点。例如,偏移分页允许您跳转到任何页面,而在基于光标的分页中,您只能跳转到下一页/上一页。

下面的实现也存在实质性差异。偏移量很可能必须将所有记录从第一页加载到您想要获取的页面。有一些技术可以避免这种情况。

有关更多利弊,我建议阅读本文。

基于游标的分页的最佳用例?

如果您使用的是关系数据库并且有数百万条记录。查询高偏移量可能会花费大量时间/超时,而游标分页的性能会更高。

基于光标的分页可以转到特定页面吗?

不,这是该方法的缺点之一。

基于游标的分页可以返回到上一页吗?

提供两个游标作为响应是一种非常常见的技术,一个包含上一页,另一个包含下一页。如果是这种情况,您可以转到上一页。否则,你不能。

两者之间是否有任何性能差异?

是的!请参阅我上面的评论。

最新更新