Description:
I mark a performance issue correlated to the use of table ALIASes.
I'm using a query with 35 table LEFT JOINED and i belived the 5 seconds answer time was a good for returning 8000 rows.
Then i added 5 more left joined tables and the time has grown up to 7 seconds.
Yesterdasy i cleaned the database to change LEFT JOIN with INNER JOIN and so to gain time, but the resulting time was not so good: 100 seconds. So i tried to understand why.
The query contains 9 tale ALIASes, 4 ALIASes refer to 4 tables the other 5 ALIASes refer to 1 table (the same tables i added). I began eliminating all ALIASes and so I discover a very good 0.7 second answer time; every time i add an ALIAS the time grows doubles approximately !!!
I search for costraints about ALIAS i found nothing.
Meantime I will still use the old ones query.
How to repeat:
part of query i use:
SELECT
anagrafedeliverable.Cod_StatoRiga,
td_stato_riga_0.StatoRiga,
....
utente_1.user AS ModificatoDaIntervento,
anagrafeinterventi.Cod_CR,
td_changerequest.ChangeRequest
FROM anagrafedeliverable,
anagraferisorse AS anagraferisorse_0,
td_ambito,
td_area,
td_compagnia AS td_compagnia_0,
td_fasedeliverable,
td_filoneprogettuale,
td_flagproprietario,
td_fontedeliverable,
td_funzionalità,
td_gap_new,
td_offerta,
td_prodottofinito,
td_raggruppamento,
td_rilascio AS td_rilascio_0,
td_servizio,
td_stato_riga AS td_stato_riga_0,
td_statodeliverable,
td_vista,
utente,
td_compagnia AS td_compagnia_1,
td_rilascio AS td_rilascio_1,
tb_deliverableavanzamento,
td_priorità AS td_priorità_0,
td_priorità AS td_priorità_1,
td_priorità AS td_priorità_2,
td_priorità AS td_priorità_3,
td_priorità AS td_priorità_4,
td_priorità AS td_priorità_5,
anagrafeinterventi,
td_stato_riga AS td_stato_riga_1,
td_flagproprietario AS td_flagproprietario_1,
td_statointervento,
td_fonteintervento,
td_cantiere,
td_faseintervento,
anagraferisorse AS anagraferisorse_1,
td_cdc,
utente AS utente_1,
td_changerequest
WHERE anagrafedeliverable.Cod_Risorsa = anagraferisorse_0.Cod_risorsa
AND anagrafedeliverable.Cod_Ambito = td_ambito.Cod_Ambito
AND anagrafedeliverable.Cod_Area = td_area.Cod_Area
AND anagrafedeliverable.Cod_Compagnia = td_compagnia_0.Cod_Compagnia
AND anagrafedeliverable.Cod_FaseDeliverable = td_fasedeliverable.Cod_FaseDeliverable
AND anagrafedeliverable.Cod_FiloneProgettuale = td_filoneprogettuale.Cod_FiloneProgettuale
AND anagrafedeliverable.Cod_FlagProprietario = td_flagproprietario.Cod_FlagProprietario
AND anagrafedeliverable.Cod_FonteDeliverable = td_fontedeliverable.Cod_FonteDeliverable
AND anagrafedeliverable.Cod_Funzionalità = td_funzionalità.Cod_Funzionalità
AND anagrafedeliverable.Cod_GapNew = td_gap_new.Cod_GapNew
AND anagrafedeliverable.Cod_Offerta = td_offerta.Cod_Offerta
AND anagrafedeliverable.Cod_ProdottoFinito = td_prodottofinito.Cod_Prodottofinito
AND anagrafedeliverable.Cod_Raggruppamento = td_raggruppamento.Cod_Raggruppamento
AND anagrafedeliverable.Cod_Rilascio = td_rilascio_0.Cod_rilascio
AND anagrafedeliverable.Cod_Servizio = td_servizio.Cod_Servizio
AND anagrafedeliverable.Cod_StatoRiga = td_stato_riga_0.Cod_StatoRiga
AND anagrafedeliverable.Cod_StatoRiga = 0
AND anagrafedeliverable.Cod_StatoDeliverable = td_statodeliverable.Cod_StatoDeliverable
AND anagrafedeliverable.Cod_Vista = td_vista.Cod_vista
AND anagrafedeliverable.Cod_User = utente.Cod_User
AND anagrafedeliverable.Cod_CompagniaRiferimento = td_compagnia_1.Cod_Compagnia
AND anagrafedeliverable.Cod_RilascioBaseline = td_rilascio_1.Cod_rilascio
AND anagrafedeliverable.CodiceDeliverable = tb_deliverableavanzamento.CodiceDeliverable
AND tb_deliverableavanzamento.Cod_Priorità = td_priorità_0.Cod_Priorità
AND tb_deliverableavanzamento.Cod_PrioritàAA = td_priorità_1.Cod_Priorità
AND tb_deliverableavanzamento.Cod_PrioritàGV = td_priorità_2.Cod_Priorità
AND tb_deliverableavanzamento.Cod_PrioritàIV = td_priorità_3.Cod_Priorità
AND tb_deliverableavanzamento.Cod_PrioritàTO = td_priorità_4.Cod_Priorità
AND tb_deliverableavanzamento.Cod_PrioritàVE = td_priorità_5.Cod_Priorità
AND anagrafedeliverable.CodiceDeliverable = anagrafeinterventi.CodiceDeliverable
AND anagrafedeliverable.Cod_StatoRiga = anagrafeinterventi.Cod_StatoRiga
AND anagrafeinterventi.Cod_StatoRiga = td_stato_riga_1.Cod_StatoRiga
AND anagrafeinterventi.Cod_FlagProprietario = td_flagproprietario_1.Cod_FlagProprietario
AND anagrafeinterventi.Cod_StatoIntervento = td_statointervento.Cod_StatoIntervento
AND anagrafeinterventi.Cod_FonteIntervento = td_fonteintervento.Cod_FonteIntervento
AND anagrafeinterventi.Cod_Cantiere = td_cantiere.Cod_Cantiere
AND anagrafeinterventi.Cod_FaseIntervento = td_faseintervento.Cod_FaseIntervento
AND anagrafeinterventi.Cod_risorsa = anagraferisorse_1.Cod_risorsa
AND anagrafeinterventi.Cod_CDC = td_cdc.Cod_CDC
AND anagrafeinterventi.Cod_User = utente_1.Cod_User
AND anagrafeinterventi.Cod_CR = td_changerequest.Cod_CR;
Description: I mark a performance issue correlated to the use of table ALIASes. I'm using a query with 35 table LEFT JOINED and i belived the 5 seconds answer time was a good for returning 8000 rows. Then i added 5 more left joined tables and the time has grown up to 7 seconds. Yesterdasy i cleaned the database to change LEFT JOIN with INNER JOIN and so to gain time, but the resulting time was not so good: 100 seconds. So i tried to understand why. The query contains 9 tale ALIASes, 4 ALIASes refer to 4 tables the other 5 ALIASes refer to 1 table (the same tables i added). I began eliminating all ALIASes and so I discover a very good 0.7 second answer time; every time i add an ALIAS the time grows doubles approximately !!! I search for costraints about ALIAS i found nothing. Meantime I will still use the old ones query. How to repeat: part of query i use: SELECT anagrafedeliverable.Cod_StatoRiga, td_stato_riga_0.StatoRiga, .... utente_1.user AS ModificatoDaIntervento, anagrafeinterventi.Cod_CR, td_changerequest.ChangeRequest FROM anagrafedeliverable, anagraferisorse AS anagraferisorse_0, td_ambito, td_area, td_compagnia AS td_compagnia_0, td_fasedeliverable, td_filoneprogettuale, td_flagproprietario, td_fontedeliverable, td_funzionalità, td_gap_new, td_offerta, td_prodottofinito, td_raggruppamento, td_rilascio AS td_rilascio_0, td_servizio, td_stato_riga AS td_stato_riga_0, td_statodeliverable, td_vista, utente, td_compagnia AS td_compagnia_1, td_rilascio AS td_rilascio_1, tb_deliverableavanzamento, td_priorità AS td_priorità_0, td_priorità AS td_priorità_1, td_priorità AS td_priorità_2, td_priorità AS td_priorità_3, td_priorità AS td_priorità_4, td_priorità AS td_priorità_5, anagrafeinterventi, td_stato_riga AS td_stato_riga_1, td_flagproprietario AS td_flagproprietario_1, td_statointervento, td_fonteintervento, td_cantiere, td_faseintervento, anagraferisorse AS anagraferisorse_1, td_cdc, utente AS utente_1, td_changerequest WHERE anagrafedeliverable.Cod_Risorsa = anagraferisorse_0.Cod_risorsa AND anagrafedeliverable.Cod_Ambito = td_ambito.Cod_Ambito AND anagrafedeliverable.Cod_Area = td_area.Cod_Area AND anagrafedeliverable.Cod_Compagnia = td_compagnia_0.Cod_Compagnia AND anagrafedeliverable.Cod_FaseDeliverable = td_fasedeliverable.Cod_FaseDeliverable AND anagrafedeliverable.Cod_FiloneProgettuale = td_filoneprogettuale.Cod_FiloneProgettuale AND anagrafedeliverable.Cod_FlagProprietario = td_flagproprietario.Cod_FlagProprietario AND anagrafedeliverable.Cod_FonteDeliverable = td_fontedeliverable.Cod_FonteDeliverable AND anagrafedeliverable.Cod_Funzionalità = td_funzionalità.Cod_Funzionalità AND anagrafedeliverable.Cod_GapNew = td_gap_new.Cod_GapNew AND anagrafedeliverable.Cod_Offerta = td_offerta.Cod_Offerta AND anagrafedeliverable.Cod_ProdottoFinito = td_prodottofinito.Cod_Prodottofinito AND anagrafedeliverable.Cod_Raggruppamento = td_raggruppamento.Cod_Raggruppamento AND anagrafedeliverable.Cod_Rilascio = td_rilascio_0.Cod_rilascio AND anagrafedeliverable.Cod_Servizio = td_servizio.Cod_Servizio AND anagrafedeliverable.Cod_StatoRiga = td_stato_riga_0.Cod_StatoRiga AND anagrafedeliverable.Cod_StatoRiga = 0 AND anagrafedeliverable.Cod_StatoDeliverable = td_statodeliverable.Cod_StatoDeliverable AND anagrafedeliverable.Cod_Vista = td_vista.Cod_vista AND anagrafedeliverable.Cod_User = utente.Cod_User AND anagrafedeliverable.Cod_CompagniaRiferimento = td_compagnia_1.Cod_Compagnia AND anagrafedeliverable.Cod_RilascioBaseline = td_rilascio_1.Cod_rilascio AND anagrafedeliverable.CodiceDeliverable = tb_deliverableavanzamento.CodiceDeliverable AND tb_deliverableavanzamento.Cod_Priorità = td_priorità_0.Cod_Priorità AND tb_deliverableavanzamento.Cod_PrioritàAA = td_priorità_1.Cod_Priorità AND tb_deliverableavanzamento.Cod_PrioritàGV = td_priorità_2.Cod_Priorità AND tb_deliverableavanzamento.Cod_PrioritàIV = td_priorità_3.Cod_Priorità AND tb_deliverableavanzamento.Cod_PrioritàTO = td_priorità_4.Cod_Priorità AND tb_deliverableavanzamento.Cod_PrioritàVE = td_priorità_5.Cod_Priorità AND anagrafedeliverable.CodiceDeliverable = anagrafeinterventi.CodiceDeliverable AND anagrafedeliverable.Cod_StatoRiga = anagrafeinterventi.Cod_StatoRiga AND anagrafeinterventi.Cod_StatoRiga = td_stato_riga_1.Cod_StatoRiga AND anagrafeinterventi.Cod_FlagProprietario = td_flagproprietario_1.Cod_FlagProprietario AND anagrafeinterventi.Cod_StatoIntervento = td_statointervento.Cod_StatoIntervento AND anagrafeinterventi.Cod_FonteIntervento = td_fonteintervento.Cod_FonteIntervento AND anagrafeinterventi.Cod_Cantiere = td_cantiere.Cod_Cantiere AND anagrafeinterventi.Cod_FaseIntervento = td_faseintervento.Cod_FaseIntervento AND anagrafeinterventi.Cod_risorsa = anagraferisorse_1.Cod_risorsa AND anagrafeinterventi.Cod_CDC = td_cdc.Cod_CDC AND anagrafeinterventi.Cod_User = utente_1.Cod_User AND anagrafeinterventi.Cod_CR = td_changerequest.Cod_CR;