我有一个存储为Varchar(36)的GUID(或UUID)的MYSQL数据库。为了提高性能,我想将它们转换为Binary(16)。对于新值,我可以使用类似
的内容INSERT INTO sometable(SOMECOLUMN,UUID)VALUES ( “东西”,UNHEX([在-UUID))
但是如何将现有存储的GUID值更新为Binary(16)?
答案 0 :(得分:4)
我自己得到了答案。
如果其他人需要它。这是
将GUID列的类型更改为VARBINARY以避免右键填充。
ALTER TABLE
newtable
MODIFY COLUMNid
VARBINARY(36)NOT NULL;
将现有ID数据更新为BINARY ID
UPDATE newtable set id = UNHEX(REPLACE(id,' - ',''));
现在将列数据类型更改为BINARY(16)
ALTER TABLE
newtable
MODIFY COLUMNid
BINARY(16)NOT NULL;
答案 1 :(得分:0)
创建新列:
ALTER TABLE sometable ADD newColumn BINARY(16) AFTER UUID;
更新表格:
UPDATE sometable SET newColumn = UNHEX(UUID);
删除旧列并重命名新列(如果需要 - 通常最好不重命名,以便未更新的应用程序代码将失败而不是错误地使用表):
ALTER TABLE sometable DROP UUID, CHANGE newColumn UUID BINARY(16);