Você pensaria que essa consulta só executa a subconsulta uma vez, mantém o resultado e o compara com as linhas da consulta externa. Mas esse não é o caso do MySQL. O MySQL tem uma lacuna na inteligência de seu otimizador, então ele trata a subconsulta como uma subconsulta dependente e o executa novamente para cada valor distinto da consulta externa.
Para corrigir isso, mova a subconsulta para a cláusula FROM como uma tabela derivada. Ele executará a subconsulta uma vez e manterá o resultado como uma tabela temporária interna. Em seguida, junte-se à outra instância da tabela.
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`);
Além disso, você deve ter um índice em Cidade nas duas colunas
(CountryCode,Population)
nessa ordem, para que a consulta GROUP BY possa ser executada com eficiência.