Dopo un pò di studio ho scoperto che per Mysql l’ordine dei campi negli indici multipli è importante.
Faccio un esempio, prendiamo la seguente query:
select * from tabella
where
campoa in (‘N’,’F’,’comm’) and
campob <> ‘25566’ and
campoc = ‘0’
order by campod desc
limit 3;
Mysql usa un indice per ottimizzare la query se l’indice viene creato in questo ordine:
alter table tabella add index mult (campoc, campoa, campod);
se invece l’indice è creato così
alter table tabella add index mult (campod, campoc, campoa);
l’indice non viene usato.
Non si finisce mai di imparare :)