大規模な MySQL テーブルでのランダム行選択の最適化
大規模な MySQL テーブルから単一のランダムな行を効率的に取得することは、多くのアプリケーションにとって不可欠です。一般的なアプローチには、すべての行 ID をフェッチし、ランダムに 1 つを選択して、対応する行を取得することが含まれます。
ID が連続していてギャップがないテーブルの場合、最大 ID を見つけてその範囲内でランダム ID を生成すると、高速な解決策が得られます。 ただし、ギャップが存在するものの比較的頻度が低い場合は、ギャップ数を推定し、最大 ID を取得し、ランダム ID を計算し、計算された値以上の ID を持つ最初の行を取得するという、ランダム性は多少劣りますが実用的な方法があります。値。
重要なことは、ランダムな行選択に ORDER BY RAND()
を使用することは避けてください。この方法では、多くの場合、テーブル全体のスキャンが行われ、迅速な検索の目的が損なわれます。 同様に、順序付けに GUID を使用することも同様に非効率的です。
以上が大規模な MySQL テーブルからランダムな行をすばやく取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。