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值中有多少差距. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |