說我有一個表了一系列的記錄,我想隨機存在給用戶。我還希望用戶能夠來回分頁,所以我必須堅持某種順序,至少在一段時間內。什麼是「洗牌」數據庫記錄表的最佳方式?
該應用程序基本上只有AJAX,並且它對已經訪問過的頁面使用緩存,所以即使我總是提供隨機結果,當用戶嘗試返回時,他也會得到前一頁,因爲它會從本地加載緩存。
的問題是,如果我只返回隨機的結果,可能有一些重複。每個頁面都包含6個結果,所以要避免這種情況,我不得不這樣做WHERE id NOT IN (1,2,3,4 ...)
,我會把所有的以前加載的ID。
該溶液的巨大缺點是,它不可能緩存在服務器端任何東西,因爲每個用戶將請求不同的數據。
替代的解決方案可能是訂購的記錄中創建另一列,並洗牌它的每插入時間單位在這裏。這裏的問題是,我需要爲表中的每條記錄設置一個序列中的隨機數,這會佔用與記錄一樣多的查詢。
我使用Rails和MySQL的,如果這是任何意義的。
作爲用戶的隨機數據分頁對我來說並沒有多大意義。如果你稱之爲「6個隨機帖子!」並只是與可能的重複生活在一起,似乎它將主要是你所要求的零工作。 – jdl 2011-01-05 23:46:44
那麼如何回答答案?我很想知道是否有任何解決方案建議適用於您。 – noodl 2011-01-11 11:44:45