我正在PostgreSQL v9中存储UUID v4值.4表格,在"id"列下.

当我创建表时,无论我将"id"列定义为VARCHAR(36), CHAR(36)还是UUID数据类型,下面的写或读性能有什么不同吗?

谢谢

推荐答案

使用uuid.PostgreSQL具有本机类型是有原因的.

它以128位二进制字段的形式在内部存储uuid.其他建议的选项将其存储为十六进制,相比之下,这是非常低效的.

不仅如此,还有:

  • uuid对排序进行简单的字节排序.text, charvarchar考虑整理和地点,这对于UUID来说是无关紧要的.

  • 对于uuid,只有一种典型的代表.对于文本等,情况并非如此;你必须考虑上下对十六进制,存在或不存在{...-...}S等.

毫无疑问.使用uuid.

唯一有意义的其他类型是bytea,它至少可以用来直接存储uuid的16个字节.如果我使用的系统不能处理基本集合之外的数据类型,比如某种非常愚蠢的ORM,我会这么做.

Postgresql相关问答推荐

使用多个分隔符拆分SQL

无法使用PGx连接到Postgres数据库AWS RDS

正在加载 pgAdmin 4 v7.4...同时打开 pgAdmin

将数组的所有元素循环到jsonb中并修改值

Windows上的psql:错误:编码UTF8的字节序列无效:0xc8 0x20

JPA findBy 字段忽略大小写

函数将多列作为单列而不是多列返回

UPDATE implies move across partitions

在执行 postgresql 函数时提交事务

整数除法返回 0

如果 Column1 不为空,则按 Column1 排序,否则按 Column2 排序

为什么PostgresQL查询性能随时间下降,但在重建索引时恢复

PostgreSQL CASE 在函数中的使用

Postgres 删除表语法错误

在不存在的行上有select for update块

在 postgresql 中将 bool 转换为 int

在同一台机器上创建多个 Postgres 实例

Postgis / Geodjango:无法确定数据库的 PostGIS 版本

Ecto Postgres 安装错误密码验证失败

JOIN (SELECT ... ) ue ON 1=1?