PostgreSql表中UUID、CHAR和VARCHAR之间的性能差异?

我将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,我会这么做

发表评论