【发布时间】:2011-05-05 05:26:08
【问题描述】:
我有 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 工作站上运行,两天后我决定停止它并寻找替代方案。我还尝试创建一个新表(tt1)并使用 LEFT OUTER JOIN 仅插入 t2 中不在 t1 中的行,但它似乎需要相同的时间。 t1 中的 'tel' 字段是主键,它是 t2 中的唯一键(我也尝试过 CREATE INDEX t2tel ON t2(tel) 但没有帮助)。
有什么建议吗?我正在考虑编写一个 C# 程序来将两个表加载到有序数组或散列中并通过代码来完成......提前致谢。
【问题讨论】:
标签: mysql sql query-optimization bigtable