Ottimizzare di più JOIN su tabella/e da 25.000 records

aprescindere

Nuovo Utente
22 Ago 2013
1
0
0
Buongiorno a tutti,
volevo sottoporre a pareri esperti un quesito riguardante l'ottimizzazione, se possibile, di una query di JOIN tra più tabelle.
Ottimizzazione perché le tabelle interessate hanno tra i 20.000 e i 30.000 records.

Attualmente tutto mi funziona e viene eseguito, solamente che il tempo medio di esecuzione della query è di 20 minuti.
Posto subito la query così vado al sodo:

SELECT
prodottidatigen.codprod,prodottidatigen.descrizione,prodottidatigen.prz,prodottidatigen.iva,,prodottidatigen.um,
jgs.Trattanti,jgs.qtatrattate,jgs.euro,
prodottidatiean.ean,
prodottidatigiacenze.giac_fisica,
prodottifornitore.codprodfornit,prodottifornitore.codfornit,prodottifornitore.nomefornit,
prodottipackage.pzct,
prodottidatiprezzi01.datadecor01,prodottidatiprezzi01.przAcq01,
prodottidatiprezzi10.datadecor10,prodottidatiprezzi10.przAcq10
prodottidatiprezzizero.datadecorzero,prodottidatiprezzizero.przAcqzero,
prodottiOper.NomeOperatore
FROM prodottidatigen
LEFT JOIN jgs USING (codprod)
LEFT JOIN prodottidatiean USING (codprod)
LEFT JOIN prodottidatigiacenze USING (codprod)
LEFT JOIN prodottipackage USING (codprod)
LEFT JOIN prodottifornitore USING (codprod)
LEFT JOIN prodottidatiprezzi01 USING (codprod)
LEFT JOIN prodottidatiprezzi10 USING (codprod)
LEFT JOIN prodottidatiprezzizero USING (codprod)
LEFT OUTER JOIN prodottiOper
ON prodottifornitore.operat = prodottiOper.codOper

Dunque, ci sono 10 tabelle ognuna contenente vari dati/campi differenti di articoli di vendita, che sono circa 25.000
Tutte le tabelle hanno in comune il codiceProdotto, che viene usato come campo di unione. Solo l'ultima tabella non usa il codceProdotto come campo di unione ma ne usa uno differente.
Effettuo questa query e riesco a recuperare tutti i dati che mi servono, relazionati correttamente.
Tutto funzionante, ma il tempo di esecuzione è proprio un po' lungo, dovuto immagino al fatto che i records coinvolti siano così grandi.
I dati ottenuti da questa query li uso poi per inserirli una tabella "finale" di consultazione, tramite:
INSERT INTO tabFinale (codProd, ..., ..., )
SELECT ==> query con join indicata sopra

Se esiste la possibilità di ottimizzare il tempo di esecuzione della query,
magari usando un altro metodo al posto delle Join, sono ben disponibile a testarlo.

Grazie a chiunque possa darmi un suggerimento.