3

我必须为数据库中的每个“公司”创建唯一代码。

我认为这是可能的唯一方法是创建一个随机数,rand()然后检查数据库中该“公司”是否存在该数字,如果它确实重新创建。

我的问题是:没有更好的方法来做到这一点 - 一种更有效的方法。好像我正在创建 10 000 个代码并且数据库中已经有 500 000 个代码,它会变得越来越慢。

关于可能是更好的方法的任何想法或提示?

编辑:

对不起,也许我可以解释得更好。这些代码不会同时生成,它们可以每天/每月/每年创建一次。

此外,我需要能够定义代码的字符,例如,仅字母数字或数字

4

3 回答 3

5

我建议您使用“通用唯一标识符”:http ://en.wikipedia.org/wiki/Universally_unique_identifier为每个公司生成随机代码。通过这种方式,您可以避免检查数据库中的重复项:

任何人都可以创建一个 UUID 并使用它来识别某些东西,并且有理由相信任何人都不会无意中创建相同的标识符来识别其他东西。因此,标有 UUID 的信息可以在以后组合到单个数据库中,而无需解决标识符 (ID) 冲突。

在 PHP 中,您可以为此使用函数 uniqid:http: //es1.php.net/manual/en/function.uniqid.php

于 2013-01-18T08:11:39.393 回答
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")

于 2013-01-18T08:14:41.630 回答
0

如果代码只是整数,则使用自动增量或获取当前最大值并开始增加它

于 2013-01-18T08:12:26.157 回答