我们使用UUID作为oracle DB的主键,并尝试确定VARCHAR的适当最大字符长度。显然这是36个字符,但我们注意到UUID'生成的长度比这长 - 最多60个字符。 有没有人知道UUID的合适的最大字符长度?
答案 0 :(得分:142)
Section 3 of RFC4122提供UUID字符串表示的正式定义。它是36个字符(32个十六进制数字+ 4个破折号)。
听起来你需要找出无效的60-char ID的来源,并决定1)是否要接受它们,以及2)这些ID的最大长度可能基于用于的任何API生成它们。
答案 1 :(得分:54)
顺便说一句,这是定义为CHAR 36的完美字段,而不是VARCHAR 36,因为每个值都具有完全相同的长度。并且您将使用更少的存储空间,因为您不需要存储达到值的数据长度,只需要存储值。
答案 2 :(得分:6)
如今,大多数数据库都具有本机UUID类型,以使其更易于使用。如果不是,则它们只是128位数字,因此您可以使用BINARY(16),并且如果您经常需要文本格式,例如进行故障排除,然后添加一个计算列以从二进制列自动生成它。没有充分的理由来存储(大得多的)文本表单。