› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
bronana
V2EX  ›  MySQL

mysql 8 更新了 uuid 函数,所以我想把 id 的值设为 uuid ,是否建表 id char(36) 就可以了?

  •  
  •   bronana · Dec 20, 2023 · 3567 views
    This topic created in 1015 days ago, the information mentioned may be changed or developed.
    CREATE TABLE color ( 
      id CHAR ( 36 ) PRIMARY KEY NOT NULL, 
      name VARCHAR ( 40 ) NOT NULL
    );
    
    INSERT INTO color
    VALUES
    	( UUID(), 'blue' );
    
    -- select uuid() -- f5601d25-9f36-11ee-b57e-0242ac130002
    

    我打印(select uuid(),发现是 36 个字符)

    于是用的 id char(36),是不是这样建表的呢?

    插入也需要手动调用 uuid() 方法吗?

    13 replies  •  2023-12-21 16:17:19 +08:00
    littlewing
        1
    littlewing  
       Dec 20, 2023
    varchar 多少都无所谓,反正是可变的
    littlewing
        2
    littlewing  
       Dec 20, 2023
    @littlewing 看错了,用 char 的话,应该 36 就够了
    thinkershare
        3
    thinkershare  
       Dec 20, 2023
    CHAR(36 ),我们一般也是用这个类型,不过 id 并不在程序中 uuid(), 如果用 uuid()函数来生成,那和使用 int/long 就没啥差别了。一般都是在程序中生成。你这样做也没啥问题。内置的 uuid 生成的也是有序的,如果在程序中生成,也要注意生成值需要自动增长。
    Maboroshii
        4
    Maboroshii  
       Dec 21, 2023 via Android
    uuid 本身只有 128 位,如果为了存储效率,应该用二进制存吧?
    adoal
        5
    adoal  
       Dec 21, 2023 via iPhone
    不懂 MySQL…只知道 PG 里有原生的 UUID 类型,就是 16 字节的。不过见过好几例在 PG 里用 char(32)或者 char(36)的,不知道说啥好。
    chendy
        6
    chendy  
       Dec 21, 2023
    除非压力很大否则不如直接自增…
    xuanbg
        7
    xuanbg  
       Dec 21, 2023
    这个用法真不如自增
    coderzhangsan
        8
    coderzhangsan  
       Dec 21, 2023   ❤️ 1
    uuid 另用字段存储,id 还是保留自增,如果设置 uuid 为主键,mysql 页存储分割会不连续。
    cheng6563
        9
    cheng6563  
       Dec 21, 2023
    你知道雪花算法之类的东西产生的原因么。。
    lancelee01
        12
    lancelee01  
       Dec 21, 2023
    主键太长了,影响存储、二级索引大小,进而影响性能。一般生产上主键都是 8 字节的。当然如果数据量非常小当我没说。
    bthulu
        13
    bthulu  
       Dec 21, 2023
    用 uuid, 一般只有在需要在数据插入表之前就知道主键是多少的情况下才会用到这个. 这种情况下主键是由程序生成, 跟 mysql 关系就不大了.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2343 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 05:25 · PVG 13:25 · LAX 22:25 · JFK 01:25
    ♥ Do have faith in what you're doing.