【发布时间】:2014-03-12 22:23:26
【问题描述】:
每周超过 100 万张门票。用户选择 1 到 49 之间的 6 个号码。所有号码(门票)将无限期保留。每周都必须选出获胜者。
在一张表中,我有所有具有 ID 号和唯一电子邮件的用户。在门票表中,我有唯一门票 ID、引用用户 ID 的外键、选定的数字字段和时间戳。在某些情况下,一个用户在一周内可以拥有多张票。
存储此类数据最有效的方法是什么?更具体地说,存储数字的数据类型,请记住会有大量条目,并且还需要不时搜索。
使用您提出的数据结构,选择本周选择 4 个中奖号码 5.. 和 6 的所有用户的有效方法是什么。
我看到了一个将其存储为二进制的想法,因此 3、6 将是 001001...鉴于我认为自己是一个普通的程序员,这对我来说似乎是天才。易于搜索并且似乎存储的字节数很少(尽管我不知道 MySql 是如何准确存储其数据的)。 有没有更好的办法?我认为该方法的唯一缺点是人类不易阅读。
更新:二进制想法的链接:https://stackoverflow.com/a/1931286/2374034
【问题讨论】:
-
不是在彩票中买票,希望不是真票
-
我已经为下周的结果编写了一个算法。有兴趣吗?
-
您确实明白,如果您想要 49 个不同的选项,您需要一个 64 位数字才能能够存储它,对吗?因为人们可以存储 0 到 2^49(!!) 之间的任何内容,这是一个巨大的数字。
-
这会花费你的! ;-)
-
@Tularis 需要 49 位...选择的第 N 位表示球的数量。 stackoverflow.com/a/1931286/2374034