JOINS,INTERCEPT(或EXCEPT)或NOT EXISTS之间最快的方法是什么 如果我想知道表B中没有出现的表A的电子邮件列表。
在表A中,我在表B中有1000万个不同的电子邮件和4600万个表。
我需要找出表A中但不在表B中的电子邮件
Ex 1除EXCEPT:
SELECT DISTINCT a.email
FROM database.tablea a
EXCEPT
SELECT DISTINCT b.email
FROM database.tableb b
Ex 2与左联接:
SELECT DISTINCT a.email
FROM database.tablea a
LEFT OUTER JOIN database.tableb b
ON a.email=b.email
Ex 3不存在
not sure how to write this one...
答案 0 :(得分:0)
我倾向于写:
select distinct email
from a
where not exists (select 1 from b where b.email = a.email);
出于性能考虑,这确实需要在a(email)
和b(email)
上建立索引。