レコードがたくさんあるテーブルがあり、ランダムにユーザーに提示したいとします。私はまた、ユーザーが前後に改ページできるようにしたいので、少なくともしばらくは何らかの命令を守らなければなりません。データベースレコードのテーブルを "シャッフル"する最も良い方法は何ですか?
アプリケーションは基本的にAJAXのみであり、既に訪問したページにキャッシュを使用していますので、いつでもランダムな結果を返しても、ユーザーが戻ろうとすると、ローカルページからロードされるため、キャッシュ。
ランダムな結果のみを返すと、重複がある可能性があるという問題があります。各ページには6つの結果が含まれているので、これを防ぐために、以前に読み込まれたすべてのIDを置く場所のようなものをWHERE id NOT IN (1,2,3,4 ...)
とする必要があります。
このソリューションの大きな欠点は、すべてのユーザーが異なるデータを要求するため、サーバー側で何もキャッシュできないことです。
代替ソリューションは、レコードを注文するための別の列を作成すること、およびシャッフルかもしれないそれはここにすべての挿入時間単位。ここで問題となるのは、テーブル内のすべてのレコードに対してシーケンスの乱数を設定する必要があることです。これは、レコードと同じくらい多くのクエリが必要になります。
私はRailsとMySQLを使用していますが、これは関連性があります。
ユーザーとしてのランダムデータによるページングは、私にはあまり意味がありません。あなたが「6つのランダムな投稿」のような名前を付けた場合、可能な複製と一緒に暮らしていたのですが、ほとんどの場合、あなたは何も求めていないようです。 – jdl
回答にはどうしたらいいですか?私は、ソリューションのいずれかがあなたに適しているかどうかを知ることに興味があります。 – noodl