Dar*_*ein 6 language-agnostic pagination
这是相当琐碎的,但我在SO上注意到它们使用的是页码而不是偏移量。我知道差异很小(将页码乘以页面上的行或将偏移量除以页面上的行),但是我想知道是否建议将一个推荐给另一个。
当然,某些网站(例如Google)会使用更复杂的系统,因为它们需要跟踪您的实际搜索。但是我正在考虑一个无关紧要的简单网站。
推荐的技术是什么?
当您分页的结果集很大时,偏移量对于优化也很有用。
这是因为在某些情况下,它允许您执行
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行。
使用的组合limit并offset是最好的,因为,如果你改变你的限制并不需要任何进一步的数学找出一个新的页码。
例如,每页 20 个对象,假设第 1 页返回索引为 0 - 19 的对象,如果您在第 2 页,那么您应该查看索引为 20 - 39 的对象。如果我现在决定将限制更改为10,最常见的行为是显示索引为 20 - 29 的对象。
完成上述行为需要您使用新限制重新计算您应该在哪个页面上。上面,如果您将限制更改为 10,但将页码保持为 2,那么您将显示索引为 10 - 19 的对象。您需要将页码重新计算为 3,以便对象 20 - 显示了 29 个。
我的意见,当然。