DELETE table2
FROM table2 INNER JOIN table1
ON table2.CITY = table1.CITY
WHERE table1.COUNTRY = 'Russia'
两个表都有大约50万条记录,每条大约10列。每列不大于约100个字符
如果有大约250,000条记录符合条件,这需要多长时间?
答案 0 :(得分: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 ...
它将无法工作