比较两个表和一列时最快的获取数据的方法

时间:2018-11-20 21:27:58

标签: sql sql-server

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

1 个答案:

答案 0 :(得分:0)

我倾向于写:

select distinct email
from a
where not exists (select 1 from b where b.email = a.email);

出于性能考虑,这确实需要在a(email)b(email)上建立索引。