MySQL データベースから単純なランダム サンプルを効率的に取得する方法
SQL では、大規模なデータセットからランダム サンプルを取得するのが困難な場合があります。従来のアプローチでは、ランダムな値によって行を順序付けし、必要な数の行を選択します。ただし、この方法はコストのかかるソートと RAND() 評価を必要とするため非効率的です。
特に MySQL の場合、代替アプローチによりパフォーマンスが大幅に向上します。一様に分散された乱数を生成する MySQL の RAND() 関数の独自の機能を利用することで、ソートを完全に回避できます。
式は次のとおりです。
select * from table where rand() <= ( desired sample size / total rows )
このクエリは、各行の乱数。値の範囲は 0 から 1 です。この乱数を、必要なサンプル サイズと行の総数に基づくしきい値と比較することで、
このアプローチにより、ソートのオーバーヘッドなしで効率的な O(n) パフォーマンスが可能になります。データベースは、行ごとの RAND() 評価の膨大な計算時間やソートの複雑さを招くことなく、必要なサンプル サイズを迅速に選択できます。
MySQL の rand() 関数の能力を活用することで、次のような機能が得られます。最適な速度と効率で単純なランダム サンプルを取得します。
以上がMySQL データベースから単純なランダム サンプルを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。