MySQL对于有大量重复数据表的处理方法
2013-09-13 20:28
573 查看
需要在MySQL的一张innodb引擎的表(tableA)上添加一个唯一索引(idx_col1_u)。但是对于每个key(col1)表中已经有大量重复数据。此时,做数据的手工清理,或者SQL处理是非常耗时的。
MySQL有一个独有的 alter ignore add unique index的语法。
行为类似于insert ignore,即遇到冲突的unique数据则直接抛弃而不报错。对于加唯一索引的情况来说就是建一张空表,然后加上唯一索引,将老数据用insert ignore语法插入到新表中,遇到冲突则抛弃数据。
点:alter ignore的语法不支持innodb,所以需要把table的引擎改为MyISAM;
解决方案
MySQL有一个独有的 alter ignore add unique index的语法。
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
行为类似于insert ignore,即遇到冲突的unique数据则直接抛弃而不报错。对于加唯一索引的情况来说就是建一张空表,然后加上唯一索引,将老数据用insert ignore语法插入到新表中,遇到冲突则抛弃数据。
点: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 */
相关文章推荐
- MySQL对于有大量重复数据表的处理方法
- MySQL对于有大量重复数据表的处理方法
- 对于Packet for query is too large(mysql写入数据过大) 问题的处理方法二
- mysql对于有大量重复数据的表添加唯一索引
- MySQL处理重复数据的方法
- Excel数据大量导入MySQL--MySQL数据换行符回车符替换处理
- MYSQL处理百万级以上的数据提高查询速度的方法
- MySQL中删除重复数据的简单方法
- mysql删除重复数据方法
- MYSQL与Oracle如何处理重复数据的SQL
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- mysql 利用自增数据项的方法,对同一个表有某种关联的数据进行处理。(利用增加一项的方法)
- mysql 重复数据,求和过滤的处理
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- MySQL 处理重复数据
- MySQL 处理重复数据
- JMeter中对于Json数据的处理方法
- php查询mysql大量数据造成内存不足的解决方法