额外列显示在mdn表中使用临时,使用filesort的位置。在哪里申请适当的指数

时间:2014-10-02 10:34:30

标签: mysql

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;

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

1 个答案:

答案 0 :(得分:0)

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

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

添加

 ... UNIQUE INDEX ...

如果所有cols的组合都是唯一的。