Mysleli byste si, že tento dotaz provede poddotaz pouze jednou, zachová výsledek a poté jej porovná s řádky ve vnějším dotazu. To ale není případ MySQL. MySQL má mezeru v inteligenci svého optimalizátoru, takže s poddotazem zachází jako se závislým poddotazem a znovu jej provede pro každou odlišnou hodnotu vnějšího dotazu.
Chcete-li tento problém vyřešit, přesuňte poddotaz do klauzule FROM jako odvozenou tabulku. Poddotaz provede jednou a výsledek zachová jako interní dočasnou tabulku. Poté se připojte k jiné instanci tabulky.
SELECT `ID`, `CountryCode`, `Name`, `District`, `Population`
FROM `City`
JOIN (
SELECT `CountryCode`, MAX(`Population`) AS `Population`
FROM `City`
GROUP BY `CountryCode`
) AS _max USING (`CountryCode`, `Population`);
Také byste měli mít index města přes dva sloupce (CountryCode,Population)
v tomto pořadí, takže dotaz GROUP BY může běžet efektivně.