我需要生成2000万个唯一代码才能存储在mySQL中。代码字符串应该是字母数字减去模糊字符(0,1,O,L,I,S,5),因此总可用字符数为29.字符串应该多长时间才能容纳2000万个唯一代码?
此外,任何人都可以帮助创建一个mySQL程序,该程序将生成并插入维护唯一性的代码吗?
更新:生成的代码不能是连续的,以避免增加暴力尝试,例如,只应使用100个连续代码中的1个。
谢谢!
答案 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中生成这些数字。