ORDER BY rand()
のパフォーマンスは他のソリューションに比べて非常に遅いのですか?はいの場合は、データベースからランダムな行を選択するより良い方法は何ですか?MySQLはランダムなrow-rand()のパフォーマンスを選択します
マイクエリ:
SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1;
ORDER BY rand()
のパフォーマンスは他のソリューションに比べて非常に遅いのですか?はいの場合は、データベースからランダムな行を選択するより良い方法は何ですか?MySQLはランダムなrow-rand()のパフォーマンスを選択します
マイクエリ:
SELECT sName FROM bpoint WHERE placeID=? ORDER BY rand() LIMIT 1;
はい、ORDER BY RAND()
が大きく、結果セットでは非常に遅くなることがあります。
オプションは(配列に)この文で結果セットを取得することです。その後
SELECT sName FROM bpoint WHERE placeID=?;
- $resultset
クエリからの無作為のアイテムを取得するためにarray_rand($resultset)
を使用しています。
それでは、PHP関数array_rand()は高速ですか? –
@JamaicaBob - 結果セットの大きさによります。あなたのテーブルのbpointにはいくつの行がありますか? – bestprogrammerintheworld
約10.000行 –
私はとにかくあなたが正しい、簡単な解決策があるかもしれないとは思わない、これはそれがあるどのくらいのデータに依存しますがhttp://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/
便利なモミのかもしれません、とにかく、大きなテーブルと非常に遅いです。どのくらい大きなテーブルを話していますか? – bestprogrammerintheworld
これはまた、正確には「ランダム」を意味するものによって異なります。すべてのレコードを等しい確率で選択する必要がありますか?あるいは、完全に一様な分布は不要ですか? – eggyal
5-10.000行。同じ確率が望まれる。 –