Buongiorno, ho eseguito la migrazione da un db access verso mysql, il db viene utilizzato da un sito in classic asp.
Ho migrato le tabelle con le medesime chiavi e indici.
Ora noto che alcune query vengono eseguite 3 o 4 volte più lentamente.
Vorrei un parere su questa query specifica che avevo creato con l'editor visuale di access, forse per mysql non è scritta nel modo migliore.
select * from ((((ordini left join ordini_fatture on ordini.idord = ordini_fatture.idord) left join ddt on ordini.idord = ddt.idord) left join fatture on ordini_fatture.idfat = fatture.idfat) inner join utenti on ordini.iduser = utenti.iduser) left join (select incassi.idord, sum(incassi.importo) as sommadiimporto from incassi group by incassi.idord ) as sommadiincassi on ordini.idord = sommadiincassi.idord where ordini.eliminato=false and year(ordini.data)>=2015 order by ordini.idord desc
Il funzionamento è questo: ho una tabella ordini e una tabella incassi, estraggo la somma degli incassi per ogni ordine e poi allego altri dati da tabelle collegate, ho tolto l'elenco dei campi che visualizzo per semplificare la lettura.
Prendendo i dati dal db access la pagina veniva generata in 0.5 secondi, prendendo i dati da mysql la pagina viene generata in 1.5 secondi, ho gli stessi tempi eseguendo la query da phpmyadmin.
Questo è l'explain:
[TABLE="class: data ajax"]
id[/TH]
select_type[/TH]
table[/TH]
type[/TH]
possible_keys[/TH]
key[/TH]
key_len[/TH]
ref[/TH]
rows[/TH]
Extra[/TH]
[/TR]
[TR="class: odd"]
[TD="class: inline_edit not_null nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null"]PRIMARY[/TD]
[TD="class: inline_edit"]ordini[/TD]
[TD="class: inline_edit"]ALL[/TD]
[TD="class: inline_edit"]iduser[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit nowrap, align: right"]11315[/TD]
[TD="class: inline_edit not_null"]Using where; Using temporary; Using filesort[/TD]
[/TR]
[TR="class: even"]
[TD="class: inline_edit not_null nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null"]PRIMARY[/TD]
[TD="class: inline_edit"]ordini_fatture[/TD]
[TD="class: inline_edit"]ref[/TD]
[TD="class: inline_edit"]idord[/TD]
[TD="class: inline_edit"]idord[/TD]
[TD="class: inline_edit"]5[/TD]
[TD="class: inline_edit"]Sql886196_1.ordini.idord[/TD]
[TD="class: inline_edit nowrap, align: right"]11[/TD]
[TD="class: inline_edit not_null nowrap"][/TD]
[/TR]
[TR="class: odd"]
[TD="class: inline_edit not_null nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null"]PRIMARY[/TD]
[TD="class: inline_edit"]ddt[/TD]
[TD="class: inline_edit"]ref[/TD]
[TD="class: inline_edit"]idord[/TD]
[TD="class: inline_edit"]idord[/TD]
[TD="class: inline_edit"]5[/TD]
[TD="class: inline_edit"]Sql886196_1.ordini.idord[/TD]
[TD="class: inline_edit nowrap, align: right"]11[/TD]
[TD="class: inline_edit not_null nowrap"][/TD]
[/TR]
[TR="class: even"]
[TD="class: inline_edit not_null nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null"]PRIMARY[/TD]
[TD="class: inline_edit"]fatture[/TD]
[TD="class: inline_edit"]eq_ref[/TD]
[TD="class: inline_edit"]PRIMARY,IDfat[/TD]
[TD="class: inline_edit"]PRIMARY[/TD]
[TD="class: inline_edit"]4[/TD]
[TD="class: inline_edit"]Sql886196_1.ordini_fatture.idfat[/TD]
[TD="class: inline_edit nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null nowrap"][/TD]
[/TR]
[TR="class: odd"]
[TD="class: inline_edit not_null nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null"]PRIMARY[/TD]
[TD="class: inline_edit"]utenti[/TD]
[TD="class: inline_edit"]eq_ref[/TD]
[TD="class: inline_edit"]PRIMARY[/TD]
[TD="class: inline_edit"]PRIMARY[/TD]
[TD="class: inline_edit"]4[/TD]
[TD="class: inline_edit"]Sql886196_1.ordini.iduser[/TD]
[TD="class: inline_edit nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null nowrap"][/TD]
[/TR]
[TR="class: even"]
[TD="class: inline_edit not_null nowrap, align: right"]1[/TD]
[TD="class: inline_edit not_null"]PRIMARY[/TD]
[TD="class: inline_edit"]<derived2>[/TD]
[TD="class: inline_edit"]ALL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit nowrap, align: right"]10058[/TD]
[TD="class: inline_edit not_null nowrap"][/TD]
[/TR]
[TR="class: odd hover"]
[TD="class: inline_edit not_null nowrap, align: right"]2[/TD]
[TD="class: inline_edit not_null"]DERIVED[/TD]
[TD="class: inline_edit"]incassi[/TD]
[TD="class: inline_edit"]ALL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit null, align: right"]NULL[/TD]
[TD="class: inline_edit nowrap, align: right"]12423[/TD]
[TD="class: inline_edit not_null"]Using temporary; Using filesort[/TD]
[/TR]
[/TABLE]
Ho provato a forzare l'indice idord sulla tabella incassi ma senza benefici in termini di performance.
Grazie per l'aiuto.
Andrea