加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 18:22:40 所属栏目:PHP教程 来源:网络整理
导读:我正在使用rand()的命令从数据库生成随机行而没有任何问题,但我认为随着数据库大小的增加,这个rand()导致服务器上的负载很重,所以我正在寻找替代方案,我尝试生成一个随机数使用php rand()函数并将其作为id放在 mysql查询中,因为 mysql知道行id,所以它非常快
我正在使用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值中有多少差距.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读