14

ORDER BY rand()他のソリューションに比べてパフォーマンスが非常に遅いというのは本当ですか? はいの場合、データベースからランダムな行を選択するより良い方法は何ですか?

私のクエリ:

SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1; 
4

1 に答える 1

14

はい、ORDER BY RAND()大きな結果セットでは非常に遅くなる可能性があります。

オプションは、このステートメントで結果セットを取得することです (配列に):

SELECT sName FROM bpoint WHERE placeID=?; 

その後 -クエリarray_rand($resultset)からランダム化されたアイテムを取得するために使用し$resultsetます。

于 2013-04-29T22:37:46.970 に答える