首页/数据/SQL 速查/UUID 生成与存储
函数速查60 条

UUID 生成与存储

生成全局唯一标识:MySQL UUID() 返回 UUID v1 字符串;PostgreSQL 用 gen_random_uuid() 返回原生 uuid 类型。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT UUID();                             -- 如 6ccd780c-baba-1026-9564-5b8c656024db
INSERT INTO t (id, name) VALUES (UUID(), 'x');
-- 存 BINARY(16) 更省空间,并重排 v1 时间字段
SELECT UUID_TO_BIN(UUID(), 1);
SELECT BIN_TO_UUID(id, 1) FROM t;

PostgreSQL

PostgreSQL
SELECT gen_random_uuid();                  -- PG 13+ 内置(更早版本装 pgcrypto)
INSERT INTO t (id, name) VALUES (gen_random_uuid(), 'x');
MySQL UUID()v1 风格、带连字符的 36 字符字符串;UUID_SHORT() 返回递增整数
PostgreSQL原生 uuid 类型 16 字节;gen_random_uuid() 为 v4 随机
索引随机 UUID 作主键在 B+ 树中插入离散,空间与写放大高于自增主键

易错点

  • MySQL 用 CHAR(36) 存 UUID 比 BINARY(16) 多占一倍以上空间,还要额外编码转换成本
  • 把 UUID 当主键时注意写放大:高写入表可用自增主键 + UUID 唯一索引的组合

数据来源与参考

  • MySQL 8.0 Reference Manual · Miscellaneous Functions
  • PostgreSQL Documentation · UUID Functions
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌