我有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