contentMySQLで行をランダムに引く効率的な方法MySQLSQLMySQLで行をランダムに引く非効率的な方法を1つと、効率的な方法を2つ紹介します。RAND()各行にランダムな値を振って、その値でsortし、上からn件取る。log(n))かかる。行数が大きいときにめちゃめちゃ時間がかかる一番柔軟な方法ですが、テーブルが大きくなってくると厳しくなってきます。generation取得するIDをランダムに生成する。例:まず最大IDを取得する。範囲からランダムなidを生成する。rand(1..max_id)生成したidで一行引く。<random_id>を使うというのがある。詳しく知りたい人は参考リンク1を読んでください。idがだいたい一様に分布しており、1行だけ取得すればいいときに使えます。1の範囲のランダムな小数を振り、適当な値でフィルタする。10,000行あるテーブルから100件ランダムに引きたいときは、以下のようなクエリを発行する。1の範囲のランダムな小数を一様な分布から生成する(たぶん)。真になる確率は10%である。このことから、10,000行あるテーブルに対してこのクエリを発行すると、だいたい100件ぐらいの行がランダムに取得できる。狙った行数にならないことがあるテーブルが大きく、かつ取得する行数が厳密でなくてもよいときに使えます。用途に合わせて適切な方法を選びましょう。upLoginユーザーは見つかりませんでした。