2008-11-22 129 views
2

這是非常平凡的,但我注意到SO,而不是他們使用頁碼的偏移量。我知道區別是輕微的(頁面上的行數乘以頁碼或頁面上的行分割偏移量),但我想知道是否推薦使用另一個。頁面分頁時的偏移量和頁碼數

一些網站,如谷歌,當然可以用更復雜的系統,因爲他們需要跟蹤實際的搜索。但我正在考慮一個簡單的網站,這並不重要。

什麼是推薦的技術?

回答

2

使用偏移量。如果您選擇允許每頁可變(或用戶定義)數量的結果,則編碼很容易。

3

偏移也當結果集你分頁是非常大的優化是有用的。

這是因爲在某些情況下,它可以讓你做一個

WHERE my_sortorder >= (some offset) 
LIMIT 10 

而非

LIMIT 10 OFFSET 880 

這是低效率的。一個索引可以讓你直接訪問匹配my_sortoder> = 的所有行,其中一些偏移量爲,但是當您使用帶有LIMIT的OFFSET時,它需要首先查找並掃描所有880個前面的行。

0

結合使用limitoffset是最好的,因爲如果您改變了限制,它不需要任何進一步的數學計算出新的頁碼。例如,每頁有20個對象,假設頁面1返回索引爲0 - 19的對象,如果您在頁面2上,那麼您應該查看索引爲20 - 39的對象。如果我現在決定將我的限制更改爲10,最常見的行爲是顯示索引爲20 - 29的對象。

完成上述行爲將需要您使用新限制重新計算您應該在哪個頁面上。在上面,如果要將限制更改爲10,但將頁碼保留爲2,那麼您將顯示索引爲10 - 19的對象。您需要重新計算頁碼爲3,以使對象20 - 顯示了29。

我的意見,當然。