【发布时间】:2018-10-20 17:25:51
【问题描述】:
我有一个应用程序,每年需要生成大约 20 万个批次 ID。
我最开始想到使用uniqid()来生成批次ID,但是这会返回字符串,与整数相比,这将占用数据库中的巨大空间。
因此,我的问题是,是否会依赖 random_int(1, 2147483647) 来生成唯一编号?
仅供参考,一般2147483647 是PHP_INT_MAX。
【问题讨论】:
-
为什么要随机?
-
不,你不能依赖随机数在整个集合中是唯一的
-
然后使用增量值,例如 db id
-
uniqid()字符串为 13 个字节,您的整数为 4。相差 9 个字节,乘以 200K 记录 = 1,800,000 个字节。每年的记录不到 2Mb,这并不是“巨大”的空间。也就是说,如果空间和性能如此重要,为什么要在 32 位系统上运行? -
信息太少,无法专门为您提供所需的帮助,因为您提出的问题似乎有一些很好的可行解决方案,但仅在一般情况下使用 db auto increment 确实使用带有年份前缀的 uniqid 关于您的问题,这只是统计数据...在 20 亿中重复 20 万是 1/10,000
标签: php random integer uniqueidentifier