sql >> データベース >  >> RDS >> Mysql

mysqlの大きなテーブルからランダムな行をすばやく選択

    すべてのIDを取得し、そこからランダムに1つを選択して、行全体を取得します。

    IDが穴のない連続していることがわかっている場合は、最大値を取得してランダムIDを計算できます。

    あちこちに穴がありますが、ほとんどが連続した値であり、わずかに歪んだランダム性を気にしない場合は、最大値を取得してIDを計算し、計算したID以上のIDを持つ最初の行を選択します。スキューの理由は、そのような穴をフォローしているIDは、別のIDをフォローしているIDよりも選択される可能性が高いためです。

    ランダムに注文すると、ひどいテーブルスキャンが手元にあり、クイックという単語が表示されます。 そのようなソリューションには適用されません。

    そうしないでください。GUIDで注文する必要もありません。同じ問題が発生します。



    1. データベースとは何ですか?定義、タイプ、およびコンポーネント

    2. Oracle PL / SQL:UTL_FILE.FCOPYの例

    3. コマンドラインからのPostgreSQLCSVインポート

    4. データベース+Windows認証+ユーザー名/パスワード?