簡體   English   中英

MySQL查詢結果偏移量與新結果可能的限制?

[英]MySQL Query Result Offset With Limit With New Result Possibility?

我正在開發一個使用20左右滾動加載系統的應用程序,結果在您滾動時一次加載到Feed中。 此提要包含不斷添加的用戶生成的內容。 這意味着每個查詢的結果集可以更改,且偏移X。

假設我們先加載20個結果,然后再滾動20個,然后再滾動以加載下一個20個結果,則另一個用戶上傳了新內容,這實際上將在下一組20個結果中顯示一個重復項feed,因為我們正在使用OFFSET來獲取其他結果,並且由於添加了新內容(屬於查詢條件),因此總結果集已偏移1。

最好的和最有效的方法是什么? 我們已經嘗試在where條件中使用行的id來防止重復結果,並且僅對獲取的新結果使用沒有偏移的限制..因此我們可以執行WHERE id <170 LIMIT 20,WHERE id <150 LIMIT 20, id <130 LIMIT 20等等,以控制和防止重復出現...但是,這並非在所有可能的情況下都有效,因為我們的結果集並非總是按DESC排序的id列排序。

o ..還有什么其他選擇?..

您可能想嘗試數據庫解決方案。 根據初始請求,創建並填充一個表。 使用該表作為提要。

確保表名以一致的開頭(例如TableToFeedMyApp),並以保證使其唯一的結尾。 然后設置一個計划作業,以查找和刪除所有早於您認為一定間隔的表。

為什么在偏移量選項中使用where子句而不是limit Limit可以采用兩個參數。 offset參數似乎完全可以滿足您的要求。 例如:

limit 100, 20

從第101行開始進行20行。 然后:

limit 120, 20

從第121行開始進行20行。 (偏移量從0開始而不是MySQL計數中的1。)

您需要做的一項增強功能是確保記錄的排序順序是穩定的 本質上,穩定排序是沒有排序鍵具有相同值的排序。 為此,只需將id列作為排序的最后一列即可。 它是唯一的,因此,如果有任何重復的排序鍵,則添加id會使排序穩定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM