Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
[MYSQL] Left Join lente: come ottimizare la query?
martedì 08 maggio 2012 - 15.22
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
MySQL 5.5
|
MySQL 5.1
the_driver
Profilo
| Senior Member
214
messaggi | Data Invio:
mar 8 mag 2012 - 15:22
Ciaoa tutti, purtroppo riscontro un grosso problema di lentezza su una applicazione web che utilizza Mysql come database.
Il problema è molto semplice: è stata definita una griglia popolata da dei valori presi da una query dinamica (ovvero, via sw seleziono quali colonne restituire)formata da LEFT Join, in quanto vogliamo che comandi sembre la tabella principale.
Esempio:
tabella persona (colonna id_persona : chiave primaria INT autoincrement)
tabella anagrafica (colonna id_anagrafica: chiave primaria,colonna id_persona: INT)
tabella hobbies (colonna id_hobbies: chiave primaria,,colonna id_persona: INT)
La tabella persona "comanda" sulle altre tabelle. Ha circa 1200 record.
Eseguendo il profiler, mi segnala le seguenti cose:
Bad Performance
Full Table Scans
Using Temporary
Using Filesort --> (ovviamente i risultati sono ordinati per persona)
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 11 mag 2012 - 12:57
>Ciaoa tutti, purtroppo riscontro un grosso problema di lentezza
>su una applicazione web che utilizza Mysql come database.
Ciao
>Eseguendo il profiler, mi segnala le seguenti cose:
>Bad Performance
>Full Table Scans
>Using Temporary
>Using Filesort --> (ovviamente i risultati sono ordinati per persona)
Il fatto che la query sia dinamica non ti aiuta, soprattutto se cambia spesso e se i filtri sono disponibili su ogni campo (pratica da non seguire).
Direi che potresti essere sprovvisto di indici, e, anche qualora volessi farne, dovresti isolare il numero di filtri possibili, andando a definire le query che vengono scritte di volta in volta per evitare i fullscan e leggere con maggiore velocità di risposta e minor consumo di cpu. 1200 righe sono VERAMENTE poche per un RDBMS. Hai qualche dettaglio in più sulle ricerche? Conosci tutti i filtri possibili? Hai mai fatto un piano di tuning per disegnare gli indici corretti?
>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
the_driver
Profilo
| Senior Member
214
messaggi | Data Invio:
mer 16 mag 2012 - 11:55
Alex81, ho indicizzato una colonna che usavo nelle join ... Le perfomance sono nettamente migliorate!
GRAZIE!!!!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !