Originariamente inviato da blekm
ho una tabella da 30.000 records
ne sei proprio sicuro?
Prova a lanciare queste due query, e posta qui il risultato,
Prima quella con le funzioni nella ricerca
Codice PHP:
EXPLAIN SELECT table3.nomecampo,
SUM(quantita) AS totale,
SUM(opzione1*quantita) AS opzione1,
SUM(opzione2*quantita) AS opzione2,
SUM(opzione3*quantita) AS opzione3,
SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
FROM table1 LEFT JOIN table3 USING (productid)
LEFT JOIN table2 USING (fieldid)
WHERE table2.field='product_group' AND FROM_UNIXTIME(miadata, '%Y') = $Year
GROUP BY table3.nomecampo;
e poi quella che fa solo una ricerca per range.
Codice PHP:
EXPLAIN SELECT table3.nomecampo,
SUM(quantita) AS totale,
SUM(opzione1*quantita) AS opzione1,
SUM(opzione2*quantita) AS opzione2,
SUM(opzione3*quantita) AS opzione3,
SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
FROM table1 LEFT JOIN table3 USING (productid)
LEFT JOIN table2 USING (fieldid)
WHERE table2.field='product_group' AND
miadata >= 20070101 and miadata <= 20080101
GROUP BY table3.nomecampo;
Ovviamente considero scontato che il campo miadata sia già indicizzato.