我正在尝试将前 100 个结果从一个内部选择加入到第二个。
我的例子有点做作,但我有一个电子邮件地址表,其中许多被标记为脏地址,还有一个我将电子邮件和姓名映射到的观察表(它们都包含此表中的主键)。我希望结果是每个电子邮件地址的不同名称的数量。
SELECT ea.email, tmp.uniques FROM
(SELECT email FROM emails WHERE dirty = 1 LIMIT 100) ea
INNER JOIN
(SELECT email, COUNT(DISTINCT(name)) as uniques FROM nameEmailObservations GROUP BY email ) tmp
ON (tmp.email = ea.email);
该查询似乎有效,但需要很长时间。知道为什么或我能做什么吗?我怀疑这是因为第二个查询的结果不限于第一个查询。第二个查询本身确实需要很长时间,因为nameEmailObservations
它很大。