zoukankan      html  css  js  c++  java
  • MySQL对于有大量重复数据表的处理方法

    需要在MySQL的一张innodb引擎的表(tableA)上添加一个唯一索引(idx_col1_u)。但是对于每个key(col1)表中已经有大量重复数据。此时,做数据的手工清理,或者SQL处理是非常耗时的。


    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 */


  • 相关阅读:
    BUG记录
    .Net HTTP请求的发送方式与分析
    初始token
    VS2017开发安卓应用(Xamarin)
    路由模板和路由特性
    使用signalR创建聊天室。
    C# SessionHelper
    postgres递归查询所有子部门
    centos7备份postgres
    Centos7挂载硬盘
  • 原文地址:https://www.cnblogs.com/james1207/p/3320138.html
Copyright © 2011-2022 走看看