最速の解決策は
だと思います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であるため、これが適切なソリューションです。