有点生疏,但我想返回表Email
中Customers
未找到的所有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
有点生疏,但我想返回表Email
中Customers
未找到的所有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
你可以这样做:
SELECT DISTINCT C.Email FROM CUSTOMERS C
LEFT OUTER JOIN MailingList M ON M.Email = C.Email
WHERE M.Email is null
我认为这两个查询都不需要分组。
相关的子查询也可以解决问题
SELECT C.Email FROM CUSTOMERS C
WHERE C.Email NOT IN (
SELECT M.Email FROM MAILINGLIST
WHERE M.EMAIL = C.EMAIL
)
为了提高性能,请确保您在 MAILINGLIST 表中的 EMAIL 字段上有一个索引。