在进行分页时偏移与页码

时间:2008-11-22 08:09:28

标签: language-agnostic pagination

这非常简单,但我注意到,他们使用页码而不是偏移。我知道差别很小(页面上的行数乘以页面上的行数或者按页面上的行划分偏移量),但我想知道是否建议使用另一个。

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

推荐的技术是什么?

3 个答案:

答案 0 :(得分:4)

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

这是因为在某些情况下它允许你做

WHERE my_sortorder >= (some offset)
LIMIT 10

而不是

LIMIT 10 OFFSET 880

效率较低。索引可以直接转到匹配my_sortoder> = 某些偏移量的所有行,但是当您使用OFFSET和LIMIT时,它需要首先查找并扫描所有880行。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

使用limitoffset的组合是最好的,因为如果您更改限制,则无需进一步数学计算新的页码。

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

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

我的意见,当然。