ホームページ >データベース >mysql チュートリアル >MySQL の ORDER BY RAND() 関数は実際にどのように動作するのでしょうか?
MySQL の ORDER BY RAND() 関数の動作
MySQL の ORDER BY RAND() 関数は一見ランダムな結果を生成しますが、実際のメカニズムは異なります一般に信じられている信念から。想定に反して、MySQL は並べ替えに影響を与えるランダム値の列を追加しません。代わりに、次のプロセスが使用されます:
予期しない実行時間
提供されたテスト クエリは、予期しない実行時間を示しています:
Query | Execution Time |
---|---|
SELECT * FROM table ORDER BY RAND() LIMIT 1 | 30-40 seconds |
SELECT id FROM table ORDER BY RAND() LIMIT 1 | 0.25 seconds |
SELECT id, username FROM table ORDER BY RAND() LIMIT 1 | 90 seconds |
実行時間のこの変動は、各クエリによって取得されるデータの違いに起因します。行全体 (*) を選択すると、特定の列 (id) のみを取得したり、すでにインデックスが付けられているデータ (id) を取得したりする場合に比べて、コストが高くなります。
高速ランダム選択の代替方法
ORDER BY RAND() は最適なパフォーマンスを提供しない可能性がありますが、代替方法により高速な結果が得られます:
以上がMySQL の ORDER BY RAND() 関数は実際にどのように動作するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。