私は多くのウェブサイトがORDER BY RAND()を使わないと言っていました。例えばhttp://forge.mysql.com/wiki/Top10SQLPerformanceTipsです。テストを実行して、20kレコードテーブルでスピードとパフォーマンスをテストしたところ、10kレコードにusername = "username"が入ります:なぜmysql ORDER BY RAND()を使用しないのですか?
SELECT username FROM testingspeed WHERE username='username' ORDER BY RAND();
結果:
Showing rows 0 - 29 (10,000 total, Query took 0.0119 sec).
id = 1
select_type = SIMPLE
table = testingspeed
type = ref
posible_keys = username
key = username
key_len = 32
ref = const
rows = 3225
Extra = Using where; Using index; Using temporary; Using filesort
それだけでクエリを実行するために0.0119秒かかったので、人々はまだRAND(BY ORDERを使用していないと言う理由、それは)、非常に良いスピードすべきですか?なぜ3225行が影響を受けるのですか?なぜ10,000行も影響を受けませんか?
原因を取り除き、10M行を追加してもう一度やり直してください。どのようにORDER BY RAND()の方がより遅いかを示します。 –
ランダムな順序で大量のレコードを取得することはめったにありません。あなたは 'ORDER BY RAND()LIMIT 10'と言っています。これらの種類の検索でテストし、他のソリューションと比較してください。 –
PHPのRAND()で検索して多数の参照を見つけました.RAND()を使用しないようにするには、本当に多くの苦情がなくなる前に、より小さいクエリの場合を除き、本番ではWHERE gender = 'male' AND location = 'antarctica'ユーザからのSELECTユーザ名 – Ryan