[MontelLUG] Query mysql e velocitą: cercasi consigli

Stefano Fraccaro stefano.fraccaro a gmail.com
Mar 11 Gen 2011 08:29:59 CET


Mi associo a Samuele, prima cosa verifica l'execution plan e gli 
indici... ti rallentano in fase di inserimento dati ma velocizzano la 
fase di estrazione.
La strategia migliore dipende anche dalla query... per dire, se fai il 
count(*) e fosse possibile ridurre il numero di tabelle coinvolte gią 
avresti un beneficio. Verifica anche quanto ci metti ad eseguire la 
query e quanto a passare i contenuti in un array... Ovviamente se limiti 
il numero di record restituiti (limit 1 per esempio) togli tutti gli 
ordinamenti.
Se mi mandi la query privatamente posso fare altre considerazioni....

Ciausssss



Il 10/01/2011 18.16, Daneel Olivaw ha scritto:
> Buongiorno signori, naturalmente con questa domanda tento di
> importunare i poveri disgraziati che lavorano su programmi e database
> vari, gli altri si ritengano salvi :-)
>
> Dato un database e un programma per "gestirlo", ad un certo punto ho
> la seguente necessitą: se in base a certi criteri ci sono dati, fai
> qualcosa, altrimenti dģ all'utente "Gnč gnč, io non ho niente."
>
> Dopo aver fatto la parte pił ardua, cioč creare l'avviso per la
> mancanza di risultati, sono arrivato a quella pił tennica: stabilire
> nel modo pił veloce se c'č qualcosa da elaborare.
>
> Ci sono 3 strade (o almeno queste sono quelle a cui sono arrivato io):
> 1) fare un "select * [condizioni, ecc.]", mettere i risultati in
> un'array o simile e se non vuota andare avanti con la fase di gestione
> dei dati, altrimenti "Gnč gnč";
>    - vantaggi: si fa la guery una volta sola, se dą risultato positivo
> bene, altrimenti amen;
>    - svantaggi: se l'esito č positivo, bisogna attendere il
> completamento della query prima di poter passare alla fase successiva;
>
> 2) fare un "select count [ecc.]", se 0 "Gnč gnč", altrimenti "select *
> [ecc.]" e gioca coi dati trovati;
>    - vantaggi: dovrebbe essere pił veloce della precedente e genera
> solo un intero al posto di un'array, che sarą in caso generata
> successivamente;
>    - svantaggi: si devono far due query;
>
> 3) fare un "select first [ecc.]", se il risultato č nullo "Gnč gnč",
> altrimenti "select * [ecc.]" e gioca coi dati trovati;
>    - vantaggi: sicuramente veloce dato che si blocca al primo risultato
> valido e non occupa eccessiva memoria;
>    - svantaggi: come la precedente, poi si deve fare la query per
> l'estrazione dei dati in caso positivo.
>
> Questo almeno dalla mi scarsa e pessima esperienza in databases e
> programmazione.
> Per ora non ci sono apprezzabili differenze tra i vari sistemi data la
> limitata quantitą di dati presenti, ma dato che non si sa mai, chiedo:
> qual č il sistema secondo voi migliore? Ce ne sono altri? Voi come
> fate? Sto ignorando bellamente qualcosa? Perché stresso qui e non
> altrove? Ecc.?
>
> Grazie in anticipo per le risposte (in caso non siano ritenute
> costruttive ci si vede dal vivo) e a presto :-)
>
> Daneel Olivaw
>


-- 

*Stefano Fraccaro**
*Automation Department

<http://www.simec.it/>

*Simec **S.p.A.**- *via E. Fermi, 4 - 31030 Castello diGodego - Treviso, 
Italy
Tel: +39.0423.7351
E-mail: *stefano.fraccaro a simec.it
*Web Site:*www.simec.it
*Web Site:*www.genius.simec.it**
**
*NOTICE: This message contains SIMEC SPA classified information intended 
only for use of the addressed name above. If the reader of this message 
is not the intended recipient or the employee or agent responsible for 
delivering the message to the intended recipient, please note that 
dissemination, distribution or copying of this communication is strictly 
forbidden. Anyone who receives this communication in error should notify 
us immediately by phone and return the original message to us at the 
above address.
SIMEC SPA - all rights reserved





More information about the montellug mailing list