1 つの内部選択から 2 番目の選択までの最初の 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);
クエリは有効なようですが、時間がかかります。なぜ、または何ができるのか考えていますか?2 番目のクエリの結果が最初のクエリに限定されていないためだと思われます。nameEmailObservations
2 番目のクエリは、巨大であるため、それだけで長い時間がかかります。