php – 由rand()性能问题和解决方案的mysql命令

前端之家收集整理的这篇文章主要介绍了php – 由rand()性能问题和解决方案的mysql命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用rand()的命令从数据库生成随机行而没有任何问题,但我认为随着数据库大小的增加,这个rand()导致服务器上的负载很重,所以我正在寻找替代方案,我尝试生成一个随机数使用PHP rand()函数并将其作为id放在 mysql查询中,因为 mysql知道行id,所以它非常快
但问题是在我的表中所有数字都不是availbale.for例如1,2,5,9,12这样.

如果PHP rand()生成数字3,4等,则查询将为空,因为没有编号为3,4的id等.

PHP生成随机数的最佳方法是什么,但它应该在该表中生成可用的no,所以它必须检查table.please建议.

$id23=rand(1,100000000);
    SELECT items FROM tablea where status='0' and id='$id23' LIMIT 1

上面的查询速度很快,但有时会生成数据库中不可用的查询.

SELECT items FROM tablea where status=0 order by rand() LIMIT 1

上面的查询太慢,导致服务器负载过重

首先,所有都生成从1到MAX(id)的随机值,而不是100000000.

然后至少有几个很好的解决方案:

>使用>不=

SELECT items FROM tablea where status='0' and id>'$id23' LIMIT 1

在(status,id,items)上创建索引,使其成为仅索引查询.>使用=,但如果找不到匹配则只需使用其他随机值重试.有时需要多次尝试,但通常只需要一次尝试. =应该更快,因为它可以使用主键.如果它更快并且在90%的时间内一次尝试,那么当需要多次尝试时,这可以弥补其他10%的时间.取决于您的id值中有多少差距.

猜你在找的PHP相关文章