微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用MySQL和PHP获取非重复的随机元素

我有一个场景,在这个场景中,我需要从一组条目中随机找到一个赢家.

条目可以是多次,现在我要获取用户ID分组的所有记录,并使用PHP的array_rand()方法来查找随机获胜者.分组用于避免重复元素.

在这里我面临两个问题

>查询正在超时,因为它正在处理近1000万条记录.
> PHP内存已耗尽,因为有大量记录.

我当前的查询很简单,看起来像这样

SELECT id, userID from table where id!= 1111 and created_at >='2017-08-10' group by userID

什么是最好的方法,将在如此大规模的环境下起作用?

解决方法:

使用ORDER BY RAND()并将结果限制为1,以避免内存耗尽.

SELECT id, userID
from table
where id!= 1111 and created_at >='2017-08-10'
group by userID
ORDER BY RAND()
LIMIT 1;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐