日期:2014-05-16 浏览次数:20731 次
需要在MySQL的一张innodb引擎的表(tableA)上添加一个唯一索引(idx_col1_u)。但是对于每个key(col1)表中已经有大量重复数据。此时,做数据的手工清理,或者SQL处理是非常耗时的。
MySQL有一个独有的 alter ignore add unique index的语法。
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
点:alter ignore的语法不支持innodb,所以需要把table的引擎改为MyISAM;
解决方案
ALTER TABLE tableA ENGINE MyISAM; /*注意:修改表结构为MyISAM */ ALTER IGNORE TABLE tableA ADD UNIQUE INDEX idx_col1_u (col1); /*添加唯一索引,消重*/ ALTER TABLE table ENGINE InnoDB; /*可选,修改表结构为InnoDB */