mySQL中有2000万个唯一代码 - 代码应该是多长?

时间:2014-01-16 14:28:26

标签: mysql unique

我需要生成2000万个唯一代码才能存储在mySQL中。代码字符串应该是字母数字减去模糊字符(0,1,O,L,I,S,5),因此总可用字符数为29.字符串应该多长时间才能容纳2000万个唯一代码?

此外,任何人都可以帮助创建一个mySQL程序,该程序将生成并插入维护唯一性的代码吗?

更新:生成的代码不能是连续的,以避免增加暴力尝试,例如,只应使用100个连续代码中的1个。

谢谢!

2 个答案:

答案 0 :(得分:1)

五个字符就足够了:29 ^ 5> 2 * 10 ^ 7。

换句话说,你可以用5个字符和29个字符的字母表来生成20511149个可能的字符串。由于这超过2000万,你只需要5个字符就可以产生2000万个独特的字符串。

我不确定是否存在MySQL函数来生成具有特定约束的唯一字符串,但您可以在应用程序中为此编写函数。如果你知道当前的记录数,那么你也知道你需要生成的下一个唯一字符串是什么。

答案 1 :(得分:0)

您可以将代码视为基数为29的数字。因此,对于N代码,您需要ceil(log(N)),但log应位于基础29中。所以在这种情况下它将是5

要生成您需要的那些ID,您可以使用可用的字符将函数从基数10转换为基数29。使用this等标准方法可以直接完成此任务。

您当然也可以使用反向函数将基数29中的数字转换为小数。事实上,一旦你拥有这两个函数,你甚至可能不需要在base 29中生成这些数字。