2011-09-13 106 views
0

MySQL/ASP - 删除重复行
我有一个包含100,000行的表,名为'photoSearch'。当从其他桌子上传输数据(花了血腥的时间,我很累)时,我不小心忘记了移除了我做的测试转移,在我把所有东西一次性转移之前,在表格中留下了3500行。MySQL/ASP - 删除重复行

ID列是'photoID'(INT),我需要删除照片ID小于6849的所有重复项。如果我可以删除重复项,那将比删除表并开始另一次转移。

有没有人有最实际和最安全的方式来做到这一点的任何建议?


UPDATE:

我居然回答我的问题。为了安全,我备份了我的桌子,然后我跑了这个:

ALTER IGNORE TABLE photoSearch ADD UNIQUE INDEX unique_id_index(photoID);

此删除了所有3500次重复在一分钟内:)


+0

你可以给photoSearch结构吗? –

回答

0

传统方法

备份您现有的表photoSearch喜欢的东西tmp_photoSearch使用

create table tmp_photoSearch select * from photoSearch; 

下之后,你可以执行数据按摩到表tmp_photoSearch
一旦你得到的结果不如预期,
执行交换表

rename table photoSearch to photoSearch_backup, tmp_photoSearch to photoSearch; 

为了提高插入速度(如果瓶颈不在网络传输),

http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html

为了提高MyISAM表的性能,对于LOAD DATA INFILE和INSERT,放大关键cac他通过增加key_buffer_size系统变量

+0

感谢您的建议,但很容易,作为一个业余爱好者,听起来有点棘手。我其实回答了我自己的问题。为了安全,我备份了我的桌子,然后我跑了这个: ALTER IGNORE TABLE photoSearch ADD UNIQUE INDEX unique_id_index(photoID); 这在一分钟内删除了所有3500重复:) – TheCarver