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

SQLデータベースからの単純ランダムサンプル

    最速の解決策は

    だと思います
    select * from table where rand() <= .3
    

    これが私がこれが仕事をするべきだと思う理由です。

    • 行ごとにランダムな番号が作成されます。番号は0から1の間です
    • 生成された数値が0〜.3(30%)の場合に、その行を表示するかどうかを評価します。

    これは、rand()が一様分布で数値を生成していることを前提としています。これを行う最も簡単な方法です。

    私は誰かがその解決策を勧めたのを見ました、そして彼らは証拠なしで撃墜されました..これが私がそれに言うことです-

    • これはO(n)ですが、並べ替えは必要ないため、O(n lg n)よりも高速です
    • mysqlは、行ごとに乱数を生成する能力が非常に高いです。これを試してください-

      INFORMATION_SCHEMA.TABLES制限10からrand()を選択します;

    問題のデータベースはmySQLであるため、これが適切なソリューションです。



    1. PostgreSQLで秒単位のタイムスタンプ間の違いを見つける

    2. IIS 7AppPoolIDをSQLServerログオンとして追加します

    3. システム統計関数を使用してSQLServer統計情報を取得する方法

    4. 特定の値がSQLServer(T-SQL)でマップされるパーティションを見つける