Visualizza risultati del sondaggio: Più Query o più IF?

Partecipanti
4. Non puoi votare in questo sondaggio
  • Nel caso descritto, meglio la query in più

    0 0%
  • Meglio risparmiare la query ed usare gli IF necessari

    0 0%
  • Lascia perdere la programmazione e vatti a dare all'ippica!

    4 100.00%
Visualizzazione risultati 1 fino 9 di 9

Discussione: Più IF o più Query?

  1. #1
    Guest

    Arrow Più IF o più Query?

    Salve a tutti!

    Ho davanti un problema di programmazione PHP molto semplice, ma che purtroppo mi pone un problema, quale delle due soluzioni è più convenite per la velocità di caricamento della pagina e la quantità di risorse consumate?

    Normalmente non mi porrei questo problema, essendo le query limitate ed avendo neccessità di usarne davvero tante, andrei a risparmio di quest'ultime, ma farlo in questo caso significa usare svariati IF per risparmiare una sola query.

    Andando al nocciolo della questione, è più conveniente lanciare 4 query tutte insieme, per poi stamparne i risultati con un apposito WHILE, ottenendo un codice più snello ma sprecando una query in più di quelle minime neccessarie, o usare 3 query soltanto e stampare i valori neccessari tramite degli IF, nella fattispecie 11 del tipo:

    Codice PHP:
    if(isset(<variabile>===TRUE) {<codice>}
    A voi programmatori di esperienza sicuramente superiore alla mia l'ultima parola! Motivate la vostra risposta se possibile :D Sono avido di conoscenza :D

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Dipende

    Ma se le query devono avvenire in sequenza (ti serve il risultato dell'n-esima per poter eseguire la n+1-esima) è probabile che la cosa migliore sia scrivere meno query più complesse.

  3. #3
    Guest

    Cool

    No, per niente. Le query sono interdipendenti le une dalle altra, e sono praticamente identiche fra di loro per l'esatezza, cambia il WHERE e l'ORDER BY sostanzialmente. Se non è abbastanza chiaro, faccio un po' di copia ed incolla e metto direttamente il codice in questione e le due possibile alternative :P

    P.S.= Grazie d'avermi consigliato l'ippica XD Sapevo che quell'opzione avrebbe avuto successo XD

    EDIT: Sono riuscito a risolvere il mio problema, nella fattispecie, moficando alcuni parametri e riuscendo a fare tutto con una sola Query, giocando sull'order by e con 2 if per generare la tabellatura... tabulatura... intabellazione... insomma, avete capito! Sono le 4 XD Comunque, quella lì! Come la desideravo. Tuttavia il dubbio mi rimane, in una situazione in cui bisogna scegliere tra tanti if o una query in più, cosa conviene di norma?
    Ultima modifica di morgensterngdr : 12-11-2012 alle ore 05.06.09 Motivo: Risolto

  4. #4
    Guest

    Predefinito

    Concordo co dreadnaut. Se si riesce a fare una query unica è nel 99% dei casi la soluzione migliore. Parere personale ovviamente... è chiaro che a volte dipende anche dal contesto e da altre valutazioni tipo che se devo andare in consegna del software la mattina e alle 4 di notte sto ancora lavorando alle query... mi tengo le IF e poi se ne riparla... :-)
    Ciao!

    P.S. se ti interessano vendo selle :-)

  5. #5
    Guest

    Predefinito

    Come ho scritto sopra, sono riuscito a fare l'unica query, ma mi è toccato modificare alcuni valori di altre pagine per rendere possibile eseguire l'ordinamento tramite ORDER BY senza che i valori si accavallassero o mischiassero in un modo in cui non fosse quello che volevo. Comunque no XD non devo consegnare il software a nessuno, sto programmando un GDR PBC a partire da un CSM.

    Grazie per la sella, ma cavalcherò all'amazzone, con incredibile sprezzo per il pericolo!

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da morgensterngdr Visualizza messaggio
    P.S.= Grazie d'avermi consigliato l'ippica XD Sapevo che quell'opzione avrebbe avuto successo XD
    In realtà non ho ancora votato, aspettavo più dettagli

    Senza, si possono fare solo discorsi generali: chiamare mysql ha un discreto costo, ma di solito eseguire qualcosa in mysql costa meno che eseguirlo in php. Quindi quando chiami il database conviene fargli fare più cose possibili, e se riesci a farlo in meno query ancora meglio.

    Non c'è grande differenza di velocità fra mysqli e PDO, ma eviterei le funzioni mysql_ visto che un giorno spariranno. Il giorno magari è lontano, ma dipende da quanto in avanti stai guardando.

    In php, è sempre meglio usare funzioni predefinite (soprattutto quelle sugli array) piuttosto che reinventarsi cose a mano, e con grossi o piccoli foreach.

    E' importante quindi guardare bene la documentazione di mysql ed evitare di fare in php cose che possono essere fatte in sql, che è sempre più veloce.

  7. #7
    Guest

    Predefinito

    Il PS non era rivolto a te nello specifico, ma era un generico "grazie a chi l'ha messo". Comunque ho capito, gentilissimo Dreadnaut :)

    Mi rimane solo un grosso dubbio, anche se un po' OT, ma dato che hai sollevato tu l'argomento... come spariranno? O_O Niente mysql_num_rows e mysql_fetch_assoc? o.O E con cosa dovrebbero essere sostituite?

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Le funzioni mysql_ saranno deprecate presto (5.5-6.0), ma le alternative esistono già da qualche tempo: mysqli oppure PDO, vedi tabella di confronto.
    Ultima modifica di dreadnaut : 12-11-2012 alle ore 16.36.36

  9. #9
    Guest

    Question

    Ah ok XD mi era presa un colpo per niente... beh, mi sembra solo che cambi la sintassi sostanzialmente... o sbaglio?

    Per fortuna che il CMS che sto usando ha un gestore di query a se stante, mi basterà semplicemente cambiare i parametri delle funzioni definite da mysql_ a quello che sarà... ma msqli e PDO saranno equipollenti? Perché questa innovazione?

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •