gpt4 book ai didi

Mysql关系数据库使用不同的键重复

转载 作者:可可西里 更新时间:2023-11-01 07:45:25 24 4
gpt4 key购买 nike

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

这是我的问题:我有 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脚本,数组

export tables (dump) --> array_unique,查找重复项,更正parents array --> import tables

速度很快,但需要80GB内存,以后可能会出问题

2:PHP脚本、SQL查询

exportrt tables(dump) --> 查找重复项 --> 向父表发送查询

不需要内存,但表真的很大,5 次查询需要 1 秒,5000 万次重复需要几天、几个月、几年

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

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

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

最佳答案

您为什么不简单地在列上创建一个唯一键。只需使用“忽略”关键字,它就会删除重复的记录。
因此您的查询将类似于:
ALTER IGNORE TABLE testdbtable1添加唯一索引 column1 (column1 ASC) ;

关于Mysql关系数据库使用不同的键重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com