这是非常微不足道的,但我注意到他们使用页码而不是偏移量。我知道差异很小(将页码乘以页面上的行数或将偏移量除以页面上的行数),但我想知道是否推荐一个而不是另一个。
某些网站,例如 Google,当然会使用更复杂的系统,因为它们需要跟踪您的实际搜索。但我正在考虑一个简单的网站,这无关紧要。
推荐的技术是什么?
这是非常微不足道的,但我注意到他们使用页码而不是偏移量。我知道差异很小(将页码乘以页面上的行数或将偏移量除以页面上的行数),但我想知道是否推荐一个而不是另一个。
某些网站,例如 Google,当然会使用更复杂的系统,因为它们需要跟踪您的实际搜索。但我正在考虑一个简单的网站,这无关紧要。
推荐的技术是什么?
使用偏移量。如果您选择允许每页的结果数量可变(或用户定义),则编码很容易。
当您分页的结果集非常大时,偏移量对于优化也很有用。
这是因为在某些情况下,它允许您执行
WHERE my_sortorder >= (some offset)
LIMIT 10
而不是一个
LIMIT 10 OFFSET 880
效率较低。索引可以让您直接找到与 my_sortoder >= some offset匹配的所有行,但是当您将 OFFSET 与 LIMIT 一起使用时,它需要首先查找并扫描所有 880 个前面的行。
最好使用limit
和的组合,offset
因为如果您更改限制,它不需要任何进一步的数学计算来计算新的页码。
例如,每页有 20 个对象,假设第 1 页返回索引为 0-19 的对象,如果您在第 2 页,那么您应该查看索引为 20-39 的对象。如果我现在决定将限制更改为在 10 中,最常见的行为是显示索引为 20 - 29 的对象。
完成上述行为需要您使用新限制重新计算您应该在哪个页面上。上面,如果您要将限制更改为 10,但将页码保持为 2,那么您将显示索引为 10 - 19 的对象。您需要重新计算页码为 3,以便对象 20 - 显示了 29 个。
我的意见,当然。