>데이터 베이스 >MySQL 튜토리얼 >mysql删除重复数据_MySQL

mysql删除重复数据_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-06-01 13:38:271175검색

bitsCN.com

mysql删除重复数据

 

删除表内重复数据的一种解决方案:

     

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

insert into tt values(i,params);

set i=i+1;

end while;

commit;

end

mysql命令行操作:插入测试数据

 

call pro_insert2(1000000,'zz');

call pro_insert2(100,'zz');

call pro_insert2(1000000,'mike');

call pro_insert2(100,'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,这种方法效率不是很高,期待更有效率的方法.

 

bitsCN.com
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.