插件窝 干货文章 mysql 能生成 uuid 吗

mysql 能生成 uuid 吗

UUID 使用 函数 MySQL 236    来源:    2025-03-28

MySQL 生成 UUID 的方法

是的,MySQL 可以生成 UUID (Universally Unique Identifier)。以下是几种在 MySQL 中生成 UUID 的方法:

1. 使用 UUID() 函数

MySQL 提供了内置的 UUID() 函数来生成标准 UUID (版本1):

SELECT UUID();
-- 示例输出: '6ccd780c-baba-1026-9564-0040f4311e29'

2. 使用 UUID_SHORT() 函数

如果需要更短的唯一标识符,可以使用 UUID_SHORT():

SELECT UUID_SHORT();
-- 示例输出: 92395783830258742

3. 在表中使用 UUID 作为主键

可以在表定义中使用 UUID 作为主键:

CREATE TABLE users (
    id CHAR(36) NOT NULL PRIMARY KEY DEFAULT UUID(),
    username VARCHAR(50) NOT NULL
);

4. 生成特定版本的 UUID

如果需要特定版本的 UUID,可以在应用层生成后插入,或者使用 MySQL 8.0+ 的 UUID_TO_BIN()BIN_TO_UUID() 函数进行转换。

注意事项

  1. UUID 比自增整数占用更多空间 (CHAR(36) 或 BINARY(16))
  2. 使用 UUID 作为主键可能会影响索引性能
  3. 对于 InnoDB 表,随机 UUID 可能导致页面分裂,影响插入性能
  4. MySQL 8.0+ 提供了 UUID_TO_BIN()BIN_TO_UUID() 函数来优化 UUID 存储

性能优化建议

如果需要使用 UUID 作为主键,考虑:

-- 在 MySQL 8.0+ 中,可以这样优化存储
CREATE TABLE optimized_users (
    id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())),
    username VARCHAR(50)
);

这样可以减少存储空间并提高查询性能。