ホームページ >データベース >mysql チュートリアル >MySQL で単純なランダム サンプリングを効率的に実行するにはどうすればよいですか?
MySQL データベースでの効率的な単純なランダム サンプリング
大規模なデータベースからのデータのサンプリングは、多くの場合、統計分析やさらなる処理のためのサブサンプリングに必要です。よく遭遇する問題の 1 つは、数百万行を含む MySQL データベースから単純なランダム サンプルを選択することです。
SELECT * FROM table ORDER BY RAND() LIMIT 10000 の単純なアプローチでは、次の処理が必要なため、パフォーマンスに重大なオーバーヘッドが発生します。テーブル全体を並べ替えます。テーブル サイズが大きくなるにつれて、このアプローチは法外に遅くなります。
効率的な解決策
より効率的なアプローチは、MySQL の乱数を生成する機能を活用することです。クエリ SELECT * FROM table WHERE rand() <= .3 は簡単な解決策を提供します。
このアプローチにはいくつかの利点があります。
テーブルのより大きなサブセットをサンプリングすることによって(例: 必要なサンプル サイズの 2 ~ 5 倍)、挿入または更新時にランダムな列にインデックスを付け、そのインデックスでフィルタリングすると、さらにサンプリングプロセスを最適化します。この方法には、インデックス スキャンのパフォーマンスの利点があり、サンプル サイズの精度が向上します。
要約すると、SELECT * FROM table WHERE rand()
以上がMySQL で単純なランダム サンプリングを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。