いくつかの調査の結果、私のニーズに適したクエリを見つけました。テーブルから ID をランダムに返します。ID フィールドは自動インクリメントなので、穴はありません。
SELECT `mydb`.`myTable`.id
FROM (SELECT Floor (Rand() * (SELECT Count(*)
FROM `mydb`.`myTable`)) num,
@num := @num + 1
FROM (SELECT @num := 0) a,
`mydb`.`myTable`
LIMIT 2000000) b,
`mydb`.`myTable`
WHERE b.num = `mydb`.`myTable`.id
私が経験した問題は、状況に応じて、ターゲット テーブル (myTable) に 30 ~ 400M のレコードが含まれていることです。LIMIT で、ランダムに選択された 2M の ID を取得したいのですが、多くの重複が発生します (これは予想されることです)。
クエリの重複を排除しながら、2M レコードを受け取ることは可能ですか? テーブルを作成して UNIQUE 値を管理できるようにしようと考えましたが、これも予想より少なくなります。
何かご意見は?どうもありがとう!