用戶量急劇上升中,偶爾會發現這麼一個問題,就是下一頁的數據中總會出現上一頁的幾條數據。 爲什麼會造成這個問題呢?用戶在查詢第一頁的時候,停留了一下,然後在這段時間內 又有兩個用戶註冊了,然後請求第二頁的數據的時候 排序的時候 兩個新用戶排在了最前面(按照註冊時間排序) 所以第二次排序的時候就變成了第二頁的數據。
那如何解決這個問題呢?
在每次請求的時候都帶上前臺最後一條數據的註冊時間,然後查詢的時候添加一個條件:註冊時間小於該時間,這樣每次返回的都只需要返回第一頁的數據就可以了 。上拉刷新的時候帶上當前時間即可,
分頁邏輯天然就有這個問題,最好的方式是接續查詢,用上一頁最後一條記錄作爲查詢下一頁的條件,這樣查出來既不會多也不會少
綜上,分頁查詢時,採取哪種sql語句的形式,主要看對分頁查詢數據出現缺失或者重複時的容忍程度。
(1)如果完全不在意數據是否有缺失或者重複,無需進行任何排序。
(2)如果不考慮數據有刪除、插入對查詢結果集造成影響的情況,則採用排序的方法可以有效避免分頁查詢結果重複或者缺失的情況,最好採用唯一列進行排序。
(3)如果要避免有刪除、插入對查詢結果集造成影響,則需要利用上一次分頁查詢結果作爲下一次查詢的條件,不斷對查詢結果進行過濾,來確保得到正確的查詢結果。
---------------------
作者:kkk6285137
來源:CSDN
原文:https://blog.csdn.net/kkk6285137/article/details/75501681
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!