我使用PHP生成UUID,根据找到的这里函数
现在,我想将其存储在MySQL数据库中。存储UUID MySQL v4的最佳/最有效的v4字段格式是什么?
我现在有varchar(256),但我很确定这比必要的要大得多。我已经找到了很多几乎-答案,但它们对于它们所指的UUID的形式通常是模棱两可的,所以我要求具体的格式。
发布于 2017-03-27 21:14:30
将其存储为VARCHAR(36),如果您希望有一个确切的契合,或VARCHAR(255),这将与相同的存储成本无论如何。这里没有理由为字节而大惊小怪。
请记住,VARCHAR字段是可变长度的,因此存储成本与它们中实际包含的数据数量成正比,而不是与它们中可能包含多少数据成正比。
将其存储为BINARY非常烦人,这些值是不可打印的,在运行查询时可以显示为垃圾。很少有理由使用文字二进制表示。人类可读的值可以复制粘贴,并且很容易处理.
其他一些平台,如Postgres,有一个适当的UUID列,它以更紧凑的格式在内部存储,但将其显示为人类可读的,因此您可以从这两种方法中获得最佳效果。
发布于 2017-11-06 10:03:52
如果每行都有UUID,则可以将其存储为CHAR(36),并在VARCHAR(36)上保存一行1字节。
uuid CHAR(36) CHARACTER SET ascii与CHAR不同,VARCHAR值存储为1字节或2字节长度前缀加数据。长度前缀表示值中的字节数。如果值不超过255个字节,列使用一个长度字节;如果值可能需要超过255个字节,则使用两个长度字节。https://dev.mysql.com/doc/refman/5.7/en/char.html
尽管对CHAR非常小心,但是即使字段是空的,它仍然会占用定义的完整长度。另外,确保字符集使用ASCII,因为CHAR会在最坏的情况下计划(即utf8中的每个字符3个字节,utf8mb4中的4个字符)。
..。MySQL必须为CHAR字符集utf8mb4列中的每个字符保留4个字节,因为这是最大可能的长度。例如,MySQL必须为CHAR(10)字符集utf8mb4列预留40个字节。https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
发布于 2018-02-21 10:49:15
问题是如何在MySQL中存储UUID。
由于mySQL的版本8.0,您可以通过UUID_TO_BIN/BIN_TO_UUID函数使用带有自动转换的binary(16):https://mysqlserverteam.com/mysql-8-0-uuid-support/
请注意,mySQL还有一种快速生成UUID作为主键的方法:
插入t值(UUID_TO_BIN(UUID(),true))
https://stackoverflow.com/questions/43056220
复制相似问题