分页时的偏移量与页码

Dar*_*ein 6 language-agnostic pagination

这是相当琐碎的,但我在SO上注意到它们使用的是页码而不是偏移量。我知道差异很小(将页码乘以页面上的行或将偏移量除以页面上的行),但是我想知道是否建议将一个推荐给另一个。

当然,某些网站(例如Google)会使用更复杂的系统,因为它们需要跟踪您的实际搜索。但是我正在考虑一个无关紧要的简单网站。

推荐的技术是什么?

Ste*_*Mai 6

使用偏移量。如果您选择每页允许可变(或用户定义)数量的结果,则编码很容易。


tho*_*ter 5

当您分页的结果集很大时,偏移量对于优化也很有用。

这是因为在某些情况下,它允许您执行

WHERE my_sortorder >= (some offset)
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

而不是

LIMIT 10 OFFSET 880
Run Code Online (Sandbox Code Playgroud)

效率较低。索引可以让您直接进入与my_sortoder> = 一些offset匹配的所有行,但是当将OFFSET与LIMIT一起使用时,它首先需要查找并扫描所有880行。


kbu*_*lds 5

使用的组合limitoffset是最好的,因为,如果你改变你的限制并不需要任何进一步的数学找出一个新的页码。

例如,每页 20 个对象,假设第 1 页返回索引为 0 - 19 的对象,如果您在第 2 页,那么您应该查看索引为 20 - 39 的对象。如果我现在决定将限制更改为10,最常见的行为是显示索引为 20 - 29 的对象。

完成上述行为需要您使用新限制重新计算您应该在哪个页面上。上面,如果您将限制更改为 10,但将页码保持为 2,那么您将显示索引为 10 - 19 的对象。您需要将页码重新计算为 3,以便对象 20 - 显示了 29 个。

我的意见,当然。