MySQL提高查询性能
我有这样一个疑问:MySQL提高查询性能,mysql,optimization,query-optimization,Mysql,Optimization,Query Optimization,我有这样一个疑问: 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 localiza
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\u id
创建一个索引,并为本地化.name
创建另一个索引(您当前有一个索引还包括本地化.lang
)
如果您正在检索大量行,您可能希望从select中删除
city.country\u id
和localization.lang
,毕竟您已经有了这些值。我不知道文件排序和临时,但我注意到您过滤了左连接的右侧,实际上将其替换为内部连接。您应该在连接本身中过滤city\u本地化
:左外连接city\u本地化打开(localization.city\u id=city.id和localization.lang='en')
。