Bug #29844 Query very slow with table ALIAS
Submitted: 17 Jul 2007 11:58 Modified: 17 Aug 2007 17:28
Reporter: francesco peretti Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Server: MyISAM storage engine Severity:S3 (Non-critical)
Version:5.41 OS:Windows
Assigned to: CPU Architecture:Any
Tags: alias, performance, query

[17 Jul 2007 11:58] francesco peretti
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;
[17 Jul 2007 17:28] Sveta Smirnova
Thank you for the report.

Please provide us output of SHOW CREATE TABLE for every table which exists in the query. Easiest way to do it: use mysqldump --no-data
[17 Aug 2007 23:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".