Raga urge aiutino,![]()
Ho 4 tabelle
1- tabelle delle spedizioni, pesi e volumi ( 1.200.000 records ) "tab:GAPP_SPED"
2- angrafica responsabili di filiali ( capoarea, capifliali ) "tab: user"
3- anagrafica filiali "tab: DEPOTS"
4- visite clienti "tab: GAPP_VISITE"
Ho impostato una pivot con subselect per recuperare tutte le filiali afferenti ai vari capiarea
(ogni capo area ha più filiali )
Funziona tutto, il problema che ci mette 33 secondi
senza subselect impostando manualmente i codici filiale ci mette 1.5 secondi cmq troppo
cosa posso fare ?![]()
codice:SELECT tb1.SETTIMANA AS wk, tb1.COD_FILIALE_OP AS FIL, SUM(IF(tb1.ANNO=2009, tb1.NUM_SPEDIZIONI, 0)) AS S_09, SUM(IF(tb1.ANNO=2010, tb1.NUM_SPEDIZIONI, 0)) AS S_10, SUM(IF(tb1.ANNO=2009, tb1.PESO_RILEVATO, 0)) AS P_09, SUM(IF(tb1.ANNO=2010, tb1.PESO_RILEVATO, 0)) AS P_10, SUM(IF(tb1.ANNO=2009, tb1.VOLUME_RILEVATO, 0)) AS V_09, SUM(IF(tb1.ANNO=2010, tb1.VOLUME_RILEVATO, 0)) AS V_10 FROM GAPP_SPED AS tb1 JOIN GAPP_VISITE tb2 ON tb1.COD_CLIENTE=tb2.codice_cliente WHERE tb1.COD_FILIALE_OP IN (SELECT COD_FILIALE_OPE AS FIL FROM DEPOTS AS tb1 JOIN user AS tb2 ON tb1.COD_AREA_OPE = tb2.SubRegion WHERE tb2.User='0001') AND tb1.ANNO BETWEEN 2009 AND 2010 AND tb1.SETTIMANA BETWEEN 1 AND WEEK(NOW()) GROUP BY wk ORDER BY wk
EXPLAIN
codice:id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE tb1 range COD_CLIENTE,COD_FILIALE_OP COD_FILIALE_OP 8 NULL 52832 Using where; Using temporary; Using filesort 1 SIMPLE tb2 ref codice_cliente codice_cliente 11 reportdwh.tb1.COD_CLIENTE 1 Using index

Rispondi quotando
