9

这是非常微不足道的,但我注意到他们使用页码而不是偏移量。我知道差异很小(将页码乘以页面上的行数或将偏移量除以页面上的行数),但我想知道是否推荐一个而不是另一个。

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

推荐的技术是什么?

4

3 回答 3

7

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

于 2008-11-22T08:33:34.387 回答
6

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

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

WHERE my_sortorder >= (some offset)
LIMIT 10

而不是一个

LIMIT 10 OFFSET 880

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

于 2009-02-28T07:26:24.973 回答
5

最好使用limit和的组合,offset因为如果您更改限制,它不需要任何进一步的数学计算来计算新的页码。

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

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

我的意见,当然。

于 2017-08-21T01:22:58.003 回答