日期:2014-05-16 浏览次数:20752 次
删除表内重复数据的一种解决方案:
?
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
?
存储过程:
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,这种方法效率不是很高,期待更有效率的方法