【问题标题】:MySQL/ASP - Delete Duplicate RowsMySQL/ASP - 删除重复行
【发布时间】:2011-09-13 23:32:23
【问题描述】:

MySQL/ASP - 删除重复行
我有一个名为“photoSearch”的包含 100,000 行的表。在从其他表传输数据时(花费了血腥的年龄,我累得要死),我不小心忘记了删除我所做的测试传输,这在我一次传输所有内容之前在表中留下了 3500 行。

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

有人对最实用和最安全的方法有任何建议吗?


更新:

我实际上回答了我自己的问题。为了安全起见,我备份了我的表,然后我运行了这个:

ALTER IGNORE TABLE photoSearch 添加唯一索引 unique_id_index (photoID);

这会在一分钟内删除所有 3500 个重复项 :)


【问题讨论】:

  • 你能给出 photoSearch 的结构吗?

标签: mysql database


【解决方案1】:

传统方法

使用 a 将现有表 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 系统变量来扩大键缓存

【讨论】:

  • 感谢您的建议,但尽管它可能很简单,但作为业余爱好者,这听起来有点棘手。我实际上回答了我自己的问题。为了安全起见,我备份了我的表,然后我运行了这个:ALTER IGNORE TABLE photoSearch ADD UNIQUE INDEX unique_id_index (photoID);这在一分钟内删除了所有 3500 个重复项 :)
猜你喜欢
  • 1970-01-01
  • 2019-07-23
  • 2011-03-19
  • 2022-01-05
  • 2017-10-11
  • 1970-01-01
  • 2011-07-18
相关资源
最近更新 更多