このクエリはサブクエリを1回だけ実行し、結果を保持してから、それを外部クエリの行と比較すると思います。しかし、MySQLの場合はそうではありません。 MySQLはオプティマイザのインテリジェンスにギャップがあるため、サブクエリを依存サブクエリとして扱います。 外側のクエリの個別の値ごとに再実行します。
これを修正するには、サブクエリを派生テーブルとしてFROM句に移動します。サブクエリを1回実行し、結果を内部一時テーブルとして保持します。次に、テーブルの他のインスタンスに参加します。
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`);
また、2つの列(CountryCode,Population)
にCityのインデックスが必要です。 この順序で、GROUPBYクエリを効率的に実行できます。