我将UUID v4值存储在PostgreSQL v9.4表中的“id”列下
当我创建表时,无论我将“id”列定义为VARCHAR(36)、CHAR(36)还是UUID数据类型,下面的写或读性能是否有任何区别
谢谢
使用uuid。PostgreSQL具有本机类型是有原因的
它以128位二进制字段的形式在内部存储uuid。您建议的其他选项将其存储为十六进制,相比之下,这是非常低效的
不仅如此,而且:
-
uuid对排序进行简单的字节排序文本, char 和 VARCHAR 考虑排序和区域设置,这对于UUID. 来说是无关紧要的。
-
只有一个
uuid的规范响应。对于文本等,情况并非如此;你必须考虑上与下六进制,存在或不存在 {…} s等。
毫无疑问。使用uuid
唯一有意义的另一种类型是bytea,它至少可以用来直接存储uuid的16个字节。如果我使用的系统不能处理基本集合之外的数据类型,比如某种真正愚蠢的ORM,我会这么做