ホームページ >データベース >mysql チュートリアル >大規模な MySQL データベースからランダムなサンプルを効率的にクエリするにはどうすればよいですか?

大規模な MySQL データベースからランダムなサンプルを効率的にクエリするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-05 14:50:42484ブラウズ

How Can I Efficiently Query a Random Sample from a Large MySQL Database?

MySQL データベースからのランダム サンプルの効率的なクエリ

初期のアプローチと制限事項:

SELECT * FROM table ORDER BY を使用してランダムサンプルを生成する簡単な方法RAND() LIMIT 10000 は、テーブルが大きい場合にパフォーマンスのボトルネックに直面します。このアプローチは、テーブル全体を並べ替える必要があるため、計算量が多くなり、数十万行のテーブルでは現実的ではありません。

最適化されたサンプリング手法:

効率的な代替方法は、次のクエリを利用することです:

SELECT * FROM table WHERE rand() <= .3

このクエリは次のクエリを使用します。原則:

  • 乱数生成: rand() 関数は、行ごとに 0 から 1 までの乱数を生成します。
  • 条件選択: その後、各行が評価され、乱数が以下であるかどうかに基づいてサンプルに含めるべきかどうかが決定されます。 0.3.

このアプローチの利点:

  • 並べ替えは必要ないため、O(n) です。
  • MySQL の乱数生成メカニズムは、値の均一な分布を保証します。
  • 対照的に、 ORDER BY RAND() アプローチは O(n lg n) であるため、大規模なデータセットの場合は大幅に遅くなります。

以上が大規模な MySQL データベースからランダムなサンプルを効率的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。