我必须为我的数据库中的每个“公司”创建唯一代码。
我认为可行的唯一方法是使用rand()
创建一个随机数,然后检查数据库中此“公司”的编号是否存在,如果它确实重新创建。
我的问题是:有没有更好的方法来做到这一点 - 一种更有效的方法。好像我正在创建10 000个代码,并且数据库中已有50万个代码,它将逐渐变慢和变慢。
有关更好的方法的任何想法或提示吗?
编辑:
对不起,也许我可以解释得更好。代码不会同时生成,可以每天/每月/每年创建一次。
另外,我需要能够定义代码的字符,例如,alpha numberic或number only
答案 0 :(得分:5)
我建议您使用“通用唯一标识符”:http://en.wikipedia.org/wiki/Universally_unique_identifier为每个公司生成随机代码。通过这种方式,您可以避免检查数据库是否有重复项:
任何人都可以创建UUID并使用它来识别某些内容 合理的信心,相同的标识符永远不会 无意中由任何人创建以识别其他内容。 因此,标有UUID的信息可以在以后组合成一个 单个数据库,无需解决标识符(ID)冲突。
在PHP中,您可以使用函数uniqid来实现此目的:http://es1.php.net/manual/en/function.uniqid.php
答案 1 :(得分:2)
MySQL的UUID功能应该有所帮助。 http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid
INSERT INTO table (col1,col2)VALUES(UUID(), "someValue")
答案 2 :(得分:0)
如果代码只是整数,那么使用自动增量或获取当前最大值并开始递增