mySQL快速删除很多行

时间:2011-07-05 17:03:06

标签: mysql select sql-delete

我有两个表,我需要第一个没有出现在第二个表中的所有行。

这些表可以在从其他表转储时被销毁。

第一张表有约5700万行。第二张表有大约1000万行。

这两个问题都是因为显而易见的原因而永远存在,请帮助我更快地完成这项工作。

SELECT *
FROM db.first
WHERE id NOT IN (SELECT id FROM db.second)
DELETE FROM db.first
WHERE id IN (SELECT id FROM db.second)

编辑:我不需要第二个表中的任何记录,我只需要出现在第一个表中但没有出现在第二个表中的行。

1 个答案:

答案 0 :(得分:4)

使用连接可能要快得多:

select one.*
from db.first one
left join db.second two on one.id = two.id
where two.id is null

和删除:

delete first
from first 
join second on first.id = second.id