ホームページ > データベース > mysql チュートリアル > MySQL で範囲内のランダムな値を生成するにはどうすればよいですか?

MySQL で範囲内のランダムな値を生成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-26 06:56:30
オリジナル
238 人が閲覧しました

How to Generate Random Values Within a Range in MySQL?

MySQL で範囲内のランダム値を取得する

はじめに

MySQL を使用する場合、ランダムな値を生成する必要がある場合があります。指定された範囲内の値。 RAND() 関数は存在しますが、この要件は満たしていません。この記事では、MySQL でこれを実現するための最適なアプローチについて詳しく説明します。

解決策:

MySQL で指定された範囲内でランダムな値を生成する最適な方法は次のとおりです:

ROUND((RAND() * (max-min))+min)
ログイン後にコピー
  • RAND(): 0 と 1 の間の乱数を生成します。
  • max: 必要な範囲の最大値。
  • min: 目的の範囲の最小値。

この数式は、RAND() に最大と最小の差を乗算し、結果に最小を加算します。 ROUND() は整数値を取得するために適用されます。

PHP 実装との比較:

MySQL ソリューションに相当する PHP は次のとおりです:

<code class="php">rand($min, $max)</code>
ログイン後にコピー

ただし、ベンチマークは多数の値を処理する場合、MySQL ソリューションの方がわずかに高速であることが示されています。 PHP と MySQL のどちらを選択するかは、処理される行の数と、ランダムな値のみが必要か、それとも追加の列が返されるかによって決まります。

クエリの例

10 の間のランダムな値を取得するにはおよび 200:

<code class="mysql">SELECT ROUND((RAND() * (200-10))+10) AS `foo`</code>
ログイン後にコピー

付録: パフォーマンスの比較

パフォーマンスの違いをさらに説明するために、次の PHP スクリプトを実行しました。

<code class="php">// MySQL
$start = microtime(1);
for( $i = 0; $i < 100000; $i++ )
{
    $r = mysql_query( 'SELECT ROUND(RAND() * (200-10) + 10) FROM dual' );
    $r = mysql_fetch_array( $r );
}
$end = microtime(1);

// PHP
$start = microtime(1);
for( $i = 0; $i < 100000; $i++ )
{
    $r = mysql_query( 'SELECT 200 AS two, 10 AS tem FROM dual' );
    $r = mysql_fetch_array( $r );
    $r[2]= rand($r[0], $r[1]);
}
$end = microtime(1);</code>
ログイン後にコピー

結果は、MySQLランダムな値のみが必要な場合は、ランダムな値を生成する方が高速ですが、追加の列が返される場合は遅くなります。

以上がMySQL で範囲内のランダムな値を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート