INDEX(reg_date) est probablement le seul index utile.
Vous êtes obligé de faire 2 tris -- un pour le GROUP BY , un autre pour le ORDER BY .
Une fois que je vois SHOW CREATE TABLE imei_tb , je pense pouvoir vous proposer une requête améliorée à l'aide d'une sous-requête.
Nouveau conseil
Un tri peut être éliminé en faisant le GROUP BY et ORDER BY match. Cela devrait fournir des résultats identiques, mais plus rapides :
GROUP BY city_id, GroupName
ORDER BY city_id, GroupName