[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