我有一个UUID字符串,我想用作我的MySQL表主键,UUID是一个32个字符的十六进制字符串(在' - '字符被剥离后)。由于最好使用数字列(int)作为数据库中的主键,我想将其转换为整数,但不确定处理它的最佳方法。
我可能会认为这一切都是错误的,并且不反对阅读文档,所以无论是示例还是建议阅读作为回应都是可以接受的。
答案 0 :(得分:26)
对于大多数情况,最好将UUID / GUID存储为BINARY(16)
。请参阅这些相关的StackOverflow问题:
转换可以(也可能应该)在MySQL而不是PHP中完成,所以无论你是使用32位PHP客户端还是64位都不重要(双关语:P)
答案 1 :(得分:1)
使用字符串类型,而不是整数。如果能解决问题,那就更好了。
如果您真的关心查找速度,请使用合成(自动增量)主键。您可以在UUID列上放置一个唯一约束,并仅使用它一次查找随后用于连接等的合成密钥。
答案 2 :(得分:0)
这也取决于存储引擎。 TokuDB应该处理所有这些问题。