MYSQL-Update将现有Varchar列GUID值更新为Binary

时间:2015-03-24 10:40:40

标签: mysql database

我有一个存储为Varchar(36)的GUID(或UUID)的MYSQL数据库。为了提高性能,我想将它们转换为Binary(16)。对于新值,我可以使用类似

的内容
  

INSERT INTO sometable(SOMECOLUMN,UUID)VALUES   ( “东西”,UNHEX([在-UUID))

但是如何将现有存储的GUID值更新为Binary(16)?

2 个答案:

答案 0 :(得分:4)

我自己得到了答案。

如果其他人需要它。这是

将GUID列的类型更改为VARBINARY以避免右键填充。

  

ALTER TABLE newtable MODIFY COLUMN id VARBINARY(36)NOT NULL;

将现有ID数据更新为BINARY ID

  

UPDATE newtable set id = UNHEX(REPLACE(id,' - ',''));

现在将列数据类型更改为BINARY(16)

  

ALTER TABLE newtable MODIFY COLUMN id BINARY(16)NOT NULL;

答案 1 :(得分:0)

  1. 创建新列:

    ALTER TABLE sometable ADD newColumn BINARY(16) AFTER UUID;
    
  2. 更新表格:

    UPDATE sometable SET newColumn = UNHEX(UUID);
    
  3. 删除旧列并重命名新列(如果需要 - 通常最好重命名,以便未更新的应用程序代码将失败而不是错误地使用表):

    ALTER TABLE sometable DROP UUID, CHANGE newColumn UUID BINARY(16);