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

大規模な MySQL テーブルからランダムな行を効率的に選択するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-24 00:06:13899ブラウズ

How to Efficiently Select Random Rows from Large MySQL Tables?

大規模な MySQL テーブルからランダムな行を効率的に選択します

大規模なデータセットを扱う場合、行のランダムなサブセットを選択するのは一般的ですが困難な作業です。 600,000 行があるテーブルの場合、10 行をランダムに選択する高速かつ効率的な方法を見つけることが重要です。

解決策

この状況で最高のパフォーマンスを得るには、次の点を考慮してください:

このソリューションは、RAND() 関数と CEIL() 関数を利用して、許容範囲内のランダム ID を生成します。次に、JOIN 操作により、ランダムに生成された ID に基づいて対応する行が取得されます。 ORDER BY r1.id ASC および LIMIT 1 を使用することにより、クエリでは正しい行が選択されることが保証されます。

この方法では ID が一様に分布していることを前提としており、ID リスト内のギャップが許容されることに注意することが重要です。不均一な配布や ID の欠落など、より高度なシナリオについては、Jan Kneschke が提供する追加の例と戦略に関する記事を参照してください。

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

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