我正在处理一个数据库,该数据库使用整数作为许多表的主键。我想使主键相对难以猜测—它们不需要非常严格,只要不增加低百位的整数即可。由于我要用现有的数据将其改造为现有的模式,因此更改主键(integer
)的数据类型是不可行的。我想知道的是如何最好地生成id。到目前为止,我能想到的选项有:
- 使用
UUID()
生成uid并将其转换为整数 - 保持一个单独的表充满随机整数,并使用一个过程从一个事务中的表中选择和删除一个。
- 使用UNIX时间戳,加上一个随机的n位数字,例如
CONCAT(UNIX_TIMESTAMP(),SUBSTRING(RAND() FROM 3 FOR 6))
我也愿意接受其他建议。
我很感激你能提供的任何想法。
谢谢,罗斯
你为什么这么做?您将弄乱数据的物理存储方式。如果您需要通过url传递查找,请使用二级索引并将其设置为GUID。