处理抽奖的最佳方式是什么?

时间:2016-03-25 17:24:43

标签: mysql

我有一张名为tickets的表,用于存储购买的所有门票。它看起来像:

id      int    AI,primary
userid  int

现在,用户显然可以购买尽可能多的门票,因为他们希望增加获胜几率。现在运行这个语句有什么不对吗

SELECT
    u.id AS winner FROM tickets t
LEFT JOIN users u ON t.user = u.id
ORDER BY RAND() LIMIT 1

对于像这样的系统,MySQL功能是否“真正”随机?

有时,当我运行查询时,会选择相同的人。

1 个答案:

答案 0 :(得分:0)

http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_rand RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers on demand that is portable between platforms for the same MySQL version.

另请注意,随着您的表变大,此查询将变得非常昂贵,因为它必须在返回之前对表中的每一行进行排序。