2014-11-25 61 views
0

我知道這個問題已經回答了很多次。 事實上,如果你參考http://www.percona.com/files/presentations/ppc2009/PPC2009_mysql_pagination.pdf 你會得到答案。MySQL中高效而有效的分頁

但是,我對這種常見方法有疑問,如下所示。

如果你是指滑動18,考慮事件的順序如下:

  1. 客戶端獲取「第一頁」
  2. 與ID = 19存在於「第三頁」後,其thumb_up計數增加至98,從而將其推到「第一頁」
  3. 客戶端獲取「第二頁面」

然後,客戶端將錯過交ID = 19。我正在做一個移動應用程序,其中的項目緩存在客戶端(想象一個無限的滾動列表)。如果緩存沒有定期更新,那麼這個帖子將會被錯過一段時間!

確保客戶端永遠不會錯過任何項目的任何智能方式,尤其是在客戶端正在獲取可能由其他用戶同時更新的項目的情況下?

我想爲表中的每個項目強加一個唯一的「更新時間戳」作爲解決方案。但是,這需要某種形式的序列化來保持時間戳的唯一性,並且對於大量更新來說效果不佳。我們還需要確保時間戳是單調遞增的,否則項目可能會錯過。

+0

eBay有這個問題,如果你按「結束最快」排序 - 在你瀏覽即將結束的時間,並移動下一頁時,可能已經創建了一個間隙。 – 2014-11-25 12:42:09

回答

-1

您可以使用瀏覽器或WebSQL的IndexedDB。使用索引數據庫並將所有數據(可能是異步)轉儲到您已發送的任何請求。

+0

如果您願意,我可以共享IndexedDB的示例。 – 2014-11-25 12:41:43

+0

這就是我在我的應用程序上做的事情,在SQLite數據庫中將項目下載到無限列表中時緩存項目。 – Lucas 2014-11-25 12:47:38