我试图纠正一个关系数据库一个月,但我找不到有效的解决方案。
Hier 是我的问题:我有 5.34 亿行关系数据库,其中包含很多外键(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,查找重复项,更正父数组--> 导入表
它相当快,但需要 80GB 内存,这可能是未来的问题
2:PHP脚本,SQL查询
导出表(转储)-> 查找重复项-> 将查询发送到父表
不需要内存,但表非常大,5 个查询需要 1 秒,50 M 重复需要几天、几个月、几年
3:在重复更新键上:我添加了一列“重复”来存储重复键,并将除键之外的所有列定义为唯一键,
插入.... .
但是有些表有超过 1 个键,有时我应该再次将 24 列定义为唯一索引和内存问题
我希望我能解释我的问题。你有什么主意吗 ?