您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL获得两个值之间的随机值

MySQL获得两个值之间的随机值

实际上,这ROUND((RAND() * (max- min))+min)MysqL中执行所需操作的最佳方法。这也是ActionScript,JavaScript和Python中的最佳方法。老实说,我更喜欢PHP方式,因为它更方便。

因为我不知道您将返回多少行,所以我无法建议您使用PHP还是MysqL这样做是否更好,但是如果您要处理大量的值,则可能会更好使用MysqL

因此,存在一个问题,即这在PHP还是MysqL中是否更好。我没有参加关于原则的辩论,而是进行了以下工作:

<pre><?PHP

$c = MysqL_connect('localhost', 'root', '');

if(!$c) die('!');
echo MysqL_select_db('test', $c)?'Connection':'Failure';
echo PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING MysqL RAND::::::::::::::::::::::::::::::'.PHP_EOL;
$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);

echo  ($end - $start) . " for MysqL select".PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING PHP RAND::::::::::::::::::::::::::::::' .PHP_EOL;
$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);

echo  ($end - $start) . " for PHP select".PHP_EOL;

MysqL的速度提高了约2-3%。

但是,如果使用此方法(请注意,MysqL将返回更多列):

<pre><?PHP

$c = MysqL_connect('localhost', 'root', '');

if(!$c) die('!');
echo MysqL_select_db('test', $c)?'Connection':'Failure';
echo PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING MysqL RAND::::::::::::::::::::::::::::::'.PHP_EOL;
$start = microtime(1);
for( $i = 0; $i < 100000; $i++ )
{
    $r = MysqL_query( 'SELECT ROUND(RAND() * (200-10) + 10) as rd, 200 as two, 10 as ten FROM dual' );
    $r = MysqL_fetch_array( $r );
}
$end = microtime(1);

echo  ($end - $start) . " for MysqL select".PHP_EOL;

echo ':::::::::::::::::::::::::BEGINNING PHP RAND::::::::::::::::::::::::::::::' .PHP_EOL;
$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);

echo  ($end - $start) . " for PHP select".PHP_EOL;

MysqL落后3-4%(非常不一致的结果)(如果不为$ r [2]使用数组索引分配,则结果大致相同)。

似乎主要的区别在于返回PHP的记录数,而不是随机化系统本身。因此,如果需要A列,B列和一个随机值,请使用PHP。如果只需要随机值,则使用MysqL

MySQL 2022/1/1 18:13:32 有664人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶