2010-05-21 74 views
0
DELETE table2 
FROM table2 INNER JOIN table1 
    ON table2.CITY = table1.CITY 
WHERE table1.COUNTRY = 'Russia' 

這兩個表都有大約50萬條記錄,每條記錄大約10列。每列不大於約100個字符估計刪除語句在mysql中應該佔多長時間

如果有大約250,000條匹配條件的記錄需要多長時間?

+0

完全取決於您的服務器,硬盤配置,mySQL服務器配置,RAM s peed,硬盤總線類型和速度......你爲什麼需要知道這一點? – 2010-05-21 19:16:31

回答

2

根據您的索引配置(如果你有很多的指標,它會減慢查詢了很多),你可能會更快做:

CREATE TABLE tmp_table2 LIKE table2; 
ALTER TABLE tmp_table2 DISABLE KEYS; 
INSERT INTO tmp_table2 SELECT t2.* FROM table2 AS t2 JOIN table1 AS t1 ON t1.CITY = t2.CITY WHERE t1.country != 'Russia'; 
ALTER TABLE tmp_table2 ENABLE KEYS; 
DROP TABLE table2; 
RENAME TABLE tmp_table2 TO table2; 

基本上,它會創建一個新表,告訴它不會更新索引,插入「好」記錄,告訴它更新索引,然後重命名它...

注意:不要嘗試在事務中包裝這個,它不會工作到期到DDL ...