我有一个场景,在这个场景中,我需要从一组条目中随机找到一个赢家.
条目可以是多次,现在我要获取按用户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;