我正在PostgreSQL v9中存储UUID v4值.4表格,在"id"列下.
当我创建表时,无论我将"id"列定义为VARCHAR(36), CHAR(36)还是UUID数据类型,下面的写或读性能有什么不同吗?
谢谢
我正在PostgreSQL v9中存储UUID v4值.4表格,在"id"列下.
当我创建表时,无论我将"id"列定义为VARCHAR(36), CHAR(36)还是UUID数据类型,下面的写或读性能有什么不同吗?
谢谢
使用uuid
.PostgreSQL具有本机类型是有原因的.
它以128位二进制字段的形式在内部存储uuid.其他建议的选项将其存储为十六进制,相比之下,这是非常低效的.
不仅如此,还有:
uuid
对排序进行简单的字节排序.text
, char
和varchar
考虑整理和地点,这对于UUID来说是无关紧要的.
对于uuid
,只有一种典型的代表.对于文本等,情况并非如此;你必须考虑上下对十六进制,存在或不存在{...-...}
S等.
毫无疑问.使用uuid
.
唯一有意义的其他类型是bytea
,它至少可以用来直接存储uuid的16个字节.如果我使用的系统不能处理基本集合之外的数据类型,比如某种非常愚蠢的ORM,我会这么做.