mysql 随机数返回1或2_MySQL获得两个值之间的随机值

小编典典

实际上,这ROUND((RAND() * (max-

min))+min)是MySQL中执行所需操作的最佳方法。这也是ActionScript,JavaScript和Python中的最佳方法。老实说,我更喜欢PHP方式,因为它更方便。

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

附录

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

<?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将返回更多列):

<?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。

2020-05-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值