【发布时间】:2019-01-24 21:20:15
【问题描述】:
我正在寻找一些关于效率和易于实施的见解,我有一个特定的目标。我有一个存储用户信息的 MySQL 表。创建帐户时,他们需要从 00000-99999 中获取自己的唯一随机 5 位代码。
这是我正在考虑的策略。其中一些似乎很难(对于像我这样的初学者),所以我只想咨询 Stack Overflow 的任何建议。
- 使用从 00000 到 99999 的所有 5 位代码以随机顺序填充
company_id列。这就是我迄今为止所做的。我的问题是,当有人创建帐户时,我需要查询数据库以找到第一个打开的行并获取与其关联的 5 位代码。到目前为止,我还没有弄清楚那部分。 - 使用从 00000 到 99999 的所有 5 位代码按数字顺序填充
company_id列。当有人创建帐户时,我会随机选择一个 open 行并获取与其关联的 5 位代码。这里的问题是选择一个打开的随机行。再说一次,我不知道我将如何做到这一点。 - 在用户创建新帐户时创建 5 位代码,并在我的
user_data中创建一个新行,该 5 位代码作为company_id列。这里的问题是创建新帐户的程序必须能够访问尚未使用的 5 位代码列表。我认为这可能是最好的选择,通过创建一个由 5 位代码 00000-99999 组成的数组,用company_id列中所有当前使用的 5 位代码填充一个数组,删除第一个数组中与第二个,然后从更改的第一个数组中选择一个随机的 5 位代码。
我要问的是,在创建新帐户时,哪个(这些策略或您自己的策略)首先在效率方面最好(不想让用户等待),其次,在易用性方面的实施。提前致谢!
【问题讨论】:
-
为什么是随机的?为什么只有 5 位数字?
-
我建议 3,有点。使用这么少的数字,您甚至可以在 sql 中动态生成它。请参阅此处第一个答案的直接链接:,但不要使用随机 stackoverflow.com/a/52098333/1007169 引用“生成 x 个随机数,然后选择一个不在表中的随机数:”。但是再次创建 00000-99999 而不是随机的。
-
@Uueerdo Random 因为人们会用它来登录,所以我宁愿他们不可预测。 5 位数,因为我可能不需要超过 100,000 个帐户。
标签: java mysql database performance random