Php 我们如何从最小值和最大值中得到两个随机值,但间距为500?
所以我有一个数据库表,它有超过80000行。不幸的是,我的查询使用了Php 我们如何从最小值和最大值中得到两个随机值,但间距为500?,php,mysql,Php,Mysql,所以我有一个数据库表,它有超过80000行。不幸的是,我的查询使用了orderbyrand(),我开始发现它会影响CPU。我决定删除orderbyrand(),而是使用php生成一个随机数,如id>=500(随机值)&&id: $min = rand(500, $max_id); 然后在生成的数字上加500以获得最大值: $min = rand(500, $max_id); $max = $min + 500; 要确保您的$max编号不大于80000($max\u id),请执行一个if语句
orderbyrand()
,我开始发现它会影响CPU。我决定删除orderbyrand()
,而是使用php生成一个随机数,如id>=500(随机值)&&id:
$min = rand(500, $max_id);
然后在生成的数字上加500以获得最大值:
$min = rand(500, $max_id);
$max = $min + 500;
要确保您的$max
编号不大于80000($max\u id
),请执行一个if语句:
$max_id = 80000;
$min = rand(500, $max_id);
$max = $min + 500;
if($max > $max_id)
{
$max = $min;
$min = $min - 500;
}
这样试试
$max_id = total rows in your table;
$max_val = $max_id-500;
$start = rand(1, $max_val);
$sql = "SELECT * FROM tbl_name LIMIT $start , 500";
这并没有考虑到表格的大小。为什么不在第一步从最大值中减去间隙?最后不要检查它。@antom。这意味着,如果他在where子句id>=(随机值)&&id中这样做,他将使用random和max=min+500计算min。如果他生成的最小值为70500,则最大值为80000。其实最下面的答案是关于它的,我在写评论的时候并没有看到它。嘿,这正是我想要的!我认为结尾有一个拼写错误,if语句$min-should=$max-500;否则$min的值可能会低于最小的id。再次感谢,你太棒了!可能有一个MySQL的声明,在MySQL中更精明的人可以想出,而不是100%依赖php。除了基本的东西,我在mysql方面并不是很先进,所以聪明的人不是我。。。。
$max_id = total rows in your table;
$max_val = $max_id-500;
$start = rand(1, $max_val);
$sql = "SELECT * FROM tbl_name LIMIT $start , 500";