Heim > Datenbank > MySQL-Tutorial > Hauptteil

为某XXX手机公司删除重复数据优化一例

WBOY
Freigeben: 2016-06-07 17:41:25
Original
986 Leute haben es durchsucht

这是他们一个开发写的SQL,目的是删除重复数据,且id是最小值的行不删除:deletefromjd_chapterawherea.`id`in(select`id`fromjd_chaptergroup&nbs..

这是他们一个开发写的SQL,目的是删除重复数据,且id是最小值的行不删除:

因为表大(千万级别),且使用了两个子查询,执行了很久没有执行完。
 

--------------------------思路----------------------------

采用临时表做关联,以下是步骤:

一、先到Slave库上把重复数据导出来,网站空间,避免造成主库压力过大。

  • into outfile '/tmp/jd_chapter.sql' FIELDS TERMINATED BY ','; 
  • 二、拷贝导出的SQL到Master主库的/tmp/目录下

    三、在Master主库上,建立一张临时表,并创建主键:

  • Query OK, 0 rows affected (0.07 sec) 
  • 四、在Master主库上,LOAD方式导入至临时表里

  • load data infile '/tmp/jd_chapter.sql' into table tmp FIELDS TERMINATED BY ','; 
  • 五、在Master主库上,删除临时表最小的id

  • delete from tmp limit 1; 
  • 六、用临时表做关联,删除jd_chapter表重复数据

  •  

     

    本文出自 “贺春旸的技术专栏” 博客,网站空间,请务必保留此出处

    ,虚拟主机
  • Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage