【发布时间】:2014-04-01 08:20:32
【问题描述】:
我有一个包含许多表的大型数据库。其中一些表可能包含email 字段。它们都是相同类型的 varchar(255)。我想要做的是将所有带有电子邮件列的表连接在一起,并获取数据库中所有唯一电子邮件的列表。
我遇到的问题是该列将有多个表,因此我需要它具有高性能。第二个问题是 afaik,将表连接在一起意味着它们必须具有从第一个表到连接表的共同值。
我希望能够做类似的事情:
SELECT
email
FROM
table_1
LEFT JOIN
table_2
USING (email)
LEFT JOIN
table_3
USING (email)
但是,我希望能够从所有表中获取所有电子邮件,无论它们是否存在于另一个表中。
对临时表中的所有表进行联合选择并从中选择不同的方法会更快吗?
我需要能够在许多表(10+)上执行此操作,其中可能包含数千到数百万行。如果需要,我会将电子邮件列设置为索引。
谢谢
【问题讨论】:
-
OUTER JOIN不需要其他表中的相同值,但它的计算成本很高,因为 db 必须处理N^T结果行,其中 N 是电子邮件数,T 是表数。
标签: mysql sql join inner-join