mysql 在大表的每一行插入不同的UUID

0mkxixxg  于 2023-10-15  发布在  Mysql
关注(0)|答案(2)|浏览(104)

我有一个包含导入数据的~ 80 k行的表。表格结构如下:

order_line_items  
  - id  
  - order_id  
  - product_id  
  - quantity  
  - price  
  - uuid

在导入时,导入了order_id、product_id、quantity和price,但uuid字段保留为null。
有没有一种方法,使用mysql的UUID()函数,批量添加一个uuid到表的每一行?我可以使用脚本来循环遍历每一行并更新它,但如果有MySQL解决方案,那将是最快的。

lnlaulya

lnlaulya1#

每次调用uuid()都会返回一个不同的唯一值。
所以一个简单

UPDATE order_line_items SET uuid = uuid();

应该为每个uuid字段分配一个唯一值。

编辑2022年3月

请注意,使用此方法时,uuid中只有几个字符发生了变化,这使得它们看起来完全相同,但实际上它们都是不同的。

  • 编辑2020年6月 *

通过@RickJames(见评论),我们试图理解一些人在运行上面的Update命令后如何获得相同的UUID(它们应该都不同)。

  1. MySQL/MariaDB.问题标记为mysql;请确保您正在运行MySQL或MariaDB,因为其他DBMS可能不会在多行上呈现UUID()的MySQL行为
    1.执行如下所示的UpdateUUID()是一个MySQL函数(因此是()
    1.检查接收更新的字段,它必须足够大以容纳36字符
    另请参见DBA SE上的related question
ht4b089n

ht4b089n2#

根据我自己的测试,它只改变了前8个字符。这意味着大约有40亿个不同的值(16 ^ 8)。如果我有一个大表,假设有1000万个条目,这意味着我有一个碰撞的概率为~ 1:400,真的这个uuid生成并不值钱。在这种情况下,你真的有一个大表与数百万的数据。因此,当这个函数很方便的时候,你应该在mysql之外生成uuid。

相关问题