我有2个MySQL表:t1和t2分别是1M和15M行。表t1只有1个字段:'tel'和t2有很多字段,但也有'tel'字段。我想要做的事很简单:删除t1中存在于t2中的所有行:删除两个大型MySQL表中的匹配记录
DELETE FROM t1 WHERE t1.tel IN (SELECT tel FROM t2)
问题是此查询似乎没有完成。我让它在8核Xeon工作站上运行,2天后我决定停下来寻找替代品。我也尝试创建一个新表(tt1),并使用LEFT OUTER JOIN仅插入t2中不在t1中的行,但它似乎需要相同的时间。 t1中的'tel'字段是主键,它是t2中的唯一键(我也尝试了CREATE INDEX t2tel ON t2(tel),但它没有帮助)。
有什么建议吗?我正在考虑编写一个C#程序,将这两个表加载到有序数组或哈希中,并通过代码完成...先谢谢了。
此外,http://www.amazon.com/High-Performance-MySQL-Optimization-Replication/dp/0596101716。最好的MySQL性能资源,永远。 – 2011-05-05 05:33:32