我正在使用rand()的命令从数据库生成随机行而没有任何问题,但我认为随着数据库大小的增加,这个rand()导致服务器上的负载很重,所以我正在寻找替代方案,我尝试生成一个随机数使用php rand()函数并将其作为id放在
mysql查询中,因为
mysql知道行id,所以它非常快
但问题是在我的表中所有数字都不是availbale.for例如1,2,5,9,12这样.
但问题是在我的表中所有数字都不是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值中有多少差距.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。