Mysql Relational Database使用不同的密钥复制

时间:2012-09-10 17:00:35

标签: mysql foreign-keys duplicates

我正在尝试纠正关系数据库一个月,但我找不到有效的解决方案。

希尔是我的问题: 我喜欢534 M行Relational Db和许多foreig键(30)。

我可以使用union ... group by ... havin count(*)= 1通过插入来处理正常的重复项,但也有不同键的重复项。

例如:

表1

id | key1 |  value 
1  | 11   |  a1  
2  | 22   |  a1 

表2

key1 | value 
11   |  a2  
22   |  a2 

Foreign key table1(key1) references table2(key1)

我正试图找到,删除重复,纠正父母。 我尝试了3种不同的方法,

1:PHP脚本,数组

导出表格(转储) - > array_unique,find duplicatelicates,correct the parents array - >导入表

它非常快,但需要80GB内存,这可能是未来的问题

2:PHP脚本,SQL查询

exporrt tables(dump) - >找到重复项 - >将查询发送到父表

不需要记忆,但表格非常大,5个查询需要1秒,50 M重复需要几天,几个月,几年

3:ON DUPLICATE UPDATE KEY 我添加了一列'duplicate'来存储重复键,我将除key之外的所有列定义为唯一键,
insert .... on duplicate update concat(duplicate,';',VALUES(key))。

但是有些表有超过1个键,有时我应该将24列定义为唯一索引和内存问题

我希望我能解释一下我的问题。你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

为什么不在列上创建唯一键。只需使用“忽略”关键字即可删除重复记录。
因此,您的查询将如下所示:
ALTER IGNORE TABLE testdbtable1 添加独特的索引column1column1 ASC);