1

有点生疏,但我想返回表EmailCustomers未找到的所有MailingList表,所以我正在使用这个查询,但它比预期的要长一点。有没有其他类型的逻辑可以用来让它更快(而不是 ie M.Email <> C.Email

 SELECT DISTINCT C.Email FROM CUSTOMERS C
 INNER JOIN MailingList M ON M.Email <> C.Email
 GROUP BY C.Email
4

2 回答 2

2

你可以这样做:

SELECT DISTINCT C.Email FROM CUSTOMERS C
LEFT OUTER JOIN MailingList M ON M.Email = C.Email
WHERE M.Email is null

我认为这两个查询都不需要分组。

于 2012-11-20T17:19:05.413 回答
0

相关的子查询也可以解决问题

SELECT C.Email FROM CUSTOMERS C 
WHERE C.Email NOT IN (
  SELECT M.Email FROM MAILINGLIST
  WHERE M.EMAIL = C.EMAIL
)

为了提高性能,请确保您在 MAILINGLIST 表中的 EMAIL 字段上有一个索引。

于 2012-11-20T17:27:51.853 回答