MySQL/ASP-删除重复行
MySQL/ASP-删除重复行MySQL/ASP-删除重复行,mysql,database,Mysql,Database,MySQL/ASP-删除重复行 我有一张10万行的表格叫做“photoSearch”。当从其他表传输数据时(花了很长时间,我累得要命),我不小心忘了删除我做的测试传输,在我一次传输所有数据之前,它在表中留下了3500行 ID列是'photoID'(INT),我需要删除photoID小于6849的所有副本。如果我可以删除重复项,那么就不会像删除表并开始另一次传输那样痛苦了 有人对最实际、最安全的方法有什么建议吗 更新: 我实际上回答了我自己的问题。为了安全起见,我备份了我的桌子,然后我运行了以下
我有一张10万行的表格叫做“photoSearch”。当从其他表传输数据时(花了很长时间,我累得要命),我不小心忘了删除我做的测试传输,在我一次传输所有数据之前,它在表中留下了3500行 ID列是'photoID'(INT),我需要删除photoID小于6849的所有副本。如果我可以删除重复项,那么就不会像删除表并开始另一次传输那样痛苦了 有人对最实际、最安全的方法有什么建议吗
更新: 我实际上回答了我自己的问题。为了安全起见,我备份了我的桌子,然后我运行了以下命令: ALTER IGNORE TABLE photoSearch添加唯一索引UNIQUE\U id\U索引(photoID) 这在一分钟内消除了所有3500个副本:)
传统方法 使用
create table tmp_photoSearch select * from photoSearch;
之后,您可以在表tmp\u photoSearch
中执行数据按摩一旦您获得了预期的结果,
执行交换表
rename table photoSearch to photoSearch_backup, tmp_photoSearch to photoSearch;
要提高插入速度(如果瓶颈不在网络传输上) 为了提高MyISAM表的性能,对于加载数据填充和插入,通过增加key_buffer_size系统变量来扩大key缓存
你能给出照片搜索的结构吗?谢谢你的建议,但可能很简单,作为一个业余爱好者,听起来有点棘手。我实际上回答了我自己的问题。为了安全起见,我备份了我的表,然后运行了以下操作:ALTER IGNORE table photoSearch ADD UNIQUE INDEX UNIQUE\u id\u INDEX(photoID);这在一分钟内消除了所有3500个副本:)