mysqlテーブルからランダムにレコードをフェッチしたい。rand()によるorderを使用してフェッチできることは知っていますが、大きなフィールドでは処理が遅いようです。randレコードをフェッチする他の方法はありますか?
4 に答える
2
主キーがある場合は、との間でId
乱数を選択して、そのアイテムを取得できます。そのアイテムが存在しない場合は、もう一度やり直してください。MIN(Id)
MAX(Id)
Id
于 2012-08-09T06:50:05.027 に答える
2
最初にランドオフセットを取得できます
SELECT FLOOR(RAND() * COUNT(*)) AS rnd FROM your_table
次に、オフセットを使用してレコードを選択します。
于 2012-08-09T06:52:34.400 に答える
1
SELECT name
FROM random JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM random)) AS id
) AS r2
USING (id);
あなたの質問はすでにここで回答されています:
于 2012-08-09T06:52:03.620 に答える
0
これを試すことができます:
SELECT * FROM table
join
(select round(rand()*(select max(id) from table)) as val from table) as rnd
on rnd.val=table.id;
于 2012-08-09T06:52:04.227 に答える