热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql删除重复数据

mysql删除重复数据删除表内重复数据的一种解决方案:www.2cto.comCreateTable:CREATETABLE`tt`(`id`int(11)DEFAULTNULL,`name`varchar(30)DEFAULTNULL)ENGINEInnoDBDEFAULT...
mysql删除重复数据
 
删除表内重复数据的一种解决方案:
   www.2cto.com  
Create Table: CREATE TABLE `tt` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
200万的数据
100万 id从1到100w name是zz
100条 id从1到100 name是zz
100万 id从1到100w name是mike
100条 id从1到100 name是mike
 
存储过程:
新增sizes+1条数据,name为params
CREATE PROCEDURE pro_insert2(in sizes int,in params varchar(30))
begin
declare i int;
start transaction;
set i = 0;
while i<=sizes do
insert into tt values(i,params);
set i=i+1;
end while;
commit;
end
  www.2cto.com  
mysql命令行操作:插入测试数据
 
call pro_insert2(1000000,&#39;zz&#39;);
call pro_insert2(100,&#39;zz&#39;);
call pro_insert2(1000000,&#39;mike&#39;);
call pro_insert2(100,&#39;mike&#39;);
 
mysql> select count(*) from tt;
+----------+
| count(*) |
+----------+
|  2000204 |
+----------+
1 row in set (0.00 sec)
 
Create Table: CREATE TABLE `tt2` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(30) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
mysql> insert into tt2 (select distinct * from tt);
Query OK, 2000002 rows affected (51.55 sec)
Records: 2000002  Duplicates: 0  Warnings: 0
 
mysql> drop table tt;
Query OK, 0 rows affected (0.10 sec)
 
mysql> alter table tt2 rename tt;
Query OK, 0 rows affected (0.09 sec)
 
mysql> select count(*) from tt;
+----------+
| count(*) |
+----------+
|  2000002 |
+----------+
1 row in set (2.54 sec)
 
到此OK,这种方法效率不是很高,期待更有效率的方法.
 

推荐阅读
author-avatar
J品1北京天7W乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有