Бихте си помислили, че тази заявка изпълнява подзаявката само веднъж, запазва резултата и след това го сравнява с редовете във външната заявка. Но това не е случаят с MySQL. MySQL има пропуск в интелигентността на своя оптимизатор, така че третира подзаявката като зависима подзаявка и го изпълнява повторно за всяка отделна стойност на външната заявка.
За да коригирате това, преместете подзаявката в клаузата FROM като производна таблица. Той ще изпълни подзаявката веднъж и ще запази резултата като вътрешна временна таблица. След това се присъединете към другия екземпляр на таблицата.
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`);
Също така трябва да имате индекс за град над двете колони (CountryCode,Population)
в този ред, така че заявката GROUP BY да може да се изпълнява ефективно.