额外的列显示位置,使用temporay,使用MDN表中的文件排序.在哪里应用适当的索引


explain extended SELECT c . id , c . city_name , 
c . area_code , c . country_id ,
 c . is_mvoo , c . is_byoo FROM city c , 
mdn m WHERE c . id = m . city_id AND c . whitelabel_partner_id =5  AND
 c . active = 'Y' AND c . country_id = 73 AND m . MDN_state_id = 7 GROUP BY
 m . city_id HAVING COUNT( m . city_id ) > 50
ORDER BY c . sorting , c . city_name;

任何人都告诉我应该在哪些列上应用索引,以便摆脱使用临时和使用文件排序。

在常量列的拳头上放置一个组合索引,然后在索引中添加连接列。您不必在两个表上添加索引,因为MySQL只会使用其中一个。

 ALTER TABLE City ADD INDEX combIdx_1 (whitelabel_partner_id, active, country_id, id)

 ... UNIQUE INDEX ...

如果所有列的组合是唯一的。

最新更新