gpt4 book ai didi

mysql - 删除两个大 MySQL 表中的匹配记录

转载 作者:行者123 更新时间:2023-11-29 02:06:00 26 4
gpt4 key购买 nike

我有 2 个 MySQL 表:t1 和 t2,分别是 1M 和 15M 行。表 t1 只有 1 个字段:“tel”,而 t2 有很多字段,但也有一个“tel”字段。我想做的很简单:删除 t1 中存在于 t2 中的所有行:

DELETE FROM t1 WHERE t1.tel IN (SELECT tel FROM t2)

问题是这个查询似乎没有完成。我让它在 8 核 Xeon 工作站上运行,2 天后我决定停止它并寻找替代方案。我还尝试创建一个新表 (tt1) 并使用 LEFT OUTER JOIN 仅插入 t2 中不在 t1 中的行,但它似乎花费了相同的时间。 t1 中的“tel”字段是主键,它是 t2 中的唯一键(我也尝试在 t2(tel) 上创建索引 t2tel,但没有帮助)。

有什么建议吗?我正在考虑编写一个 C# 程序以将两个表加载到有序数组或哈希中并通过代码完成...在此先感谢。

最佳答案

DELETE t1 
FROM t1
INNER
JOIN t2
ON t1.tel = t2.tel;

这应该比使用子查询快得多。您可以采取很多步骤来优化您的 MySQL 实例(如果尚未针对大型表进行优化)。充足的 key 缓冲区是一个好的开始。还有很多其他步骤,您最好使用 Google for MySQL performance tuning。

关于mysql - 删除两个大 MySQL 表中的匹配记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5893048/

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