2010-05-21 69 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 ...