I have such a query:
SELECT city.id, city.country_id, localization.lang , localization.name, ... some other fields ...
FROM city city
LEFT OUTER JOIN city_localization localization ON ( localization.city_id = city.id )
WHERE city.country_id = '196' AND localization.lang = 'en'
ORDER BY localization.name
"city" table schema:

"city_localization" table schema:

Explain output:

How can I avoid using filesort and temporary?
city_localizationin join itself:LEFT OUTER JOIN city_localization localization ON ( localization.city_id = city.id and localization.lang = 'en').