估计删除语句应该在mysql中占用多长时间

时间:2010-05-21 19:14:53

标签: sql mysql

DELETE table2
FROM table2 INNER JOIN table1
   ON table2.CITY = table1.CITY
WHERE table1.COUNTRY = 'Russia'

两个表都有大约50万条记录,每条大约10列。每列不大于约100个字符

如果有大约250,000条记录符合条件,这需要多长时间?

1 个答案:

答案 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 ...

它将无法工作