如何删除两个大表的析取行?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何删除两个大表的析取行?相关的知识,希望对你有一定的参考价值。
餐桌产品1:30 mio行表产品2:100个mio行
两个表都不同,但是共享一个共同的唯一索引:
create table products1(
...
UNIQUE KEY uniq_products (name, manufacture, releasedate,... <a total of 10 fields> )
)
我想从表1中删除所有行,其唯一索引不在表2中出现。
我开始如下:
DELETE FROM products1 p1 WHERE NOT EXISTS (
SELECT 1 FROM products2 p2 WHERE p1.name = p2.name, p1.manufacture = p2.manufacture, ...
)
问题:这通常是正确的方法吗?由于数据集很大,如何加快此类查询的速度?
答案
您的delete
似乎在做您想做的,假设,
的确是AND
。这是一个合理的查询。另一答案
我建议两种方法以上是关于如何删除两个大表的析取行?的主要内容,如果未能解决你的问题,请参考以下文章