处理大型(UUID)作为MySQL表主键的最佳方法

Aar*_*ray 9 php mysql hex decimal

我有一个UUID字符串,我想用作我的MySQL表主键,UUID是一个32字符的十六进制字符串(在' - '字符被剥离后).由于最好使用数字列(int)作为数据库中的主键,我想将其转换为整数,但不确定处理它的最佳方法.

  1. 由于字符串的大小(即.uuid ='a822ff2bff02461db45ddcd10a2de0c2'),我是否需要将其分解为多个"子字符串".
  2. 我目前在32位架构上运行PHP,因此由于PHP_INT_MAX大小(最大0xFFFFFFFF),在PHP中转换它将无法工作.而且我怀疑这对MySQL也是一样的限制.
  3. 我不喜欢多个主键作为修复的想法,我宁愿使用字符串表示,即使这不是首选方法.

我可能会认为这一切都是错误的,并且不反对阅读文档,因此无论是示例还是建议阅读都是可以接受的.

Haz*_*zit 26

对于大多数情况,最好将UUID/GUID存储为BINARY(16).请参阅以下相关的StackOverflow问题:

转换可以(也可能应该)在MySQL而不是PHP中完成,因此,无论您使用的是32位PHP客户端还是64位都无关紧要(双关语:P)