[MontelLUG] Query mysql e velocità: cercasi consigli

Daneel Olivaw daneel.olivaw.r a gmail.com
Lun 10 Gen 2011 18:16:18 CET


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

-- 
"Chi è pronto a rinunciare alle proprie libertà fondamentali per
comprarsi briciole di temporanea sicurezza non merita né la libertà né
la sicurezza" - Benjamin Franklin




More information about the montellug mailing list