V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amuyue
V2EX  ›  程序员

mysql 在有数据的表中直接插入一列 uuid

  •  
  •   amuyue · 2022-03-21 16:44:19 +08:00 · 1480 次点击
    这是一个创建于 765 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mysql 中的某个表, 自己把它玩坏了, 该表中是有数据的(而且对自己来说还是比较重要的), 现在是想直接给表插入一列 uuid 作为主键, 该咋整, 大佬们, 我是刚学[捂脸]

    8 条回复    2022-03-23 08:58:55 +08:00
    amuyue
        1
    amuyue  
    OP
       2022-03-21 17:21:45 +08:00
    没人给回复个吗, 尬
    可能是我表述的有问题, 是想在原有数据的基础上增加一列 uuid(顺便把值填上), 原来有 uuid, 只不过被自己给玩没了...
    mmdsun
        2
    mmdsun  
       2022-03-21 19:29:58 +08:00 via iPhone
    表新建一个列,然后 update 语句更新就行。MySQL 里面有 uuid()的函数。 如果你批量 insert 可能值是一样的就套个 MD5(uuid())。你可以用 Navicat 这种图形页面工具操作,操作完成了还能生成对应的 SQL 。
    luckyrayyy
        3
    luckyrayyy  
       2022-03-21 19:32:41 +08:00
    你的需求 alter table 加列就行了,但是不建议用 uuid 做主键
    LeeReamond
        4
    LeeReamond  
       2022-03-21 19:48:58 +08:00
    @luckyrayyy 有什么坑吗
    biubiuF
        5
    biubiuF  
       2022-03-21 20:01:17 +08:00
    mysql 还是自增主键吧,还有你重新生成 id 之前的关联关系咋办
    luckyrayyy
        6
    luckyrayyy  
       2022-03-21 20:08:57 +08:00
    @LeeReamond uuid 完全随机,会有大量的页分裂和碎片,数据量大的时候性能下降很厉害,你可以本地造几百万条试试
    thinkershare
        7
    thinkershare  
       2022-03-21 20:37:09 +08:00
    @amuyue 如果你使用 UUID 作为主键, 然后需要频繁的查询, 可以使用有序的 UUID 生成器算法, 这种算法可以保证随着时间递增, 从而避免 UUID 默认无须导致的索引更新时候到性能损失, 如果查询非常频繁, 更新很少, 那就无所谓!
    amuyue
        8
    amuyue  
    OP
       2022-03-23 08:58:55 +08:00
    好的, 感谢各位大佬
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5745 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:46 · PVG 09:46 · LAX 18:46 · JFK 21:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.