MySQL / ASP - 删除重复行
我有一个包含100,000行的表格,名为'photoSearch'。当从其他表格中传输数据时(那些血腥的年龄让我感到厌倦了),我不小心忘记删除了我做过的测试转移,在我将所有内容一次性转移之前,在表格中留下了3500行。
ID列是'photoID'(INT),我需要删除所有photoID小于6849的重复项。如果我可以删除重复项,那么删除表并启动另一个表就不那么痛苦了。传输。
有没有人就最实际和最安全的方法提出任何建议?
更新
我实际上回答了我自己的问题。为了安全起见,我备份了我的桌子,然后我跑了这个:
ALTER IGNORE TABLE photoSearch ADD UNIQUE INDEX unique_id_index(photoID);
这在一分钟内删除了所有3500个副本:)
答案 0 :(得分: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,通过增加key_buffer_size系统变量来扩大密钥缓存