Visualizzazione risultati 1 fino 12 di 12

Discussione: [PHP] Migliorare questo script in modo tale da consumare meno query

  1. #1
    Guest

    Predefinito [PHP] Migliorare questo script in modo tale da consumare meno query

    Buona Domenica a tutti :)

    Qualche tempo fa ho scritto il seguente script, il quale estrapola alcuni dati da una tabella del database.
    Però non ho capito bene quante queries consuma. Se consuma 4 queries in totale o 4 queries ogni "informazione" estrapolata (mi riferisco al limit 4).
    Cioè se imposto un limit 1, consumerò 4 queries...E se ho un limit 4, consumo sempre 4 queries oppure 16 queries in totale?
    Codice PHP:
    <?php
    $db
    = @mysql_connect('localhost','user','pass');
    mysql_select_db('dbname' , $db);
    $con = mysql_connect("localhost","user","pass");
    $sel_db = mysql_select_db("dbname", $con);
    $result = mysql_query("select * FROM wp_postmeta WHERE meta_key ='album' ORDER BY post_id desc limit 4 " ,$db);
    while (
    $records = mysql_fetch_assoc($result)) {
    echo
    "<a href=http://nomesito.it/?p=". $records['post_id'] ."><img width='95' height='95' src=". $records['meta_value'] ."></a>";
    }
    ?>
    Nel caso in cui consumi 4 queries per ogni dato finale (quindi con limit4 ho un totale di 16 query), è possibile migliorare lo script affinchè io possa consumare meno queries possibili?

  2. #2
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Non ho capito cosa hai scritto,
    ma il codice che hai postato usa UNA query
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da binarysun Visualizza messaggio
    Non ho capito cosa hai scritto,
    ma il codice che hai postato usa UNA query
    Ma una query in totale od una query per ogni dato.
    Cioè, io ho messo il limit 4:
    Codice PHP:
    $result = mysql_query("select * FROM wp_postmeta WHERE meta_key ='album' ORDER BY post_id desc limit 4 " ,$db);
    Così consumo in totale 4 queries?
    Quindi una query per ogni "dato"?

  4. #4
    makingweb non è connesso Utente attivo
    Data registrazione
    30-06-2009
    Messaggi
    281

    Predefinito

    Citazione Originalmente inviato da binarysun Visualizza messaggio
    Non ho capito cosa hai scritto,
    ma il codice che hai postato usa UNA query
    e due conessioni? non capisco il senso...


    Così consumo in totale 4 queries?
    Quindi una query per ogni "dato"?
    mmm ma no! in realta la quey è solo una mica si trova all'interno di un ciclo? tu limiti solo i risultati a 4
    Ultima modifica di makingweb : 11-04-2010 alle ore 19.18.37

  5. #5
    Guest

    Predefinito

    Vediamo se ho capito e se vi ho spiegato bene cosa intendo.

    Io ho questo script:
    Codice PHP:
    $result = mysql_query("select * FROM wp_postmeta WHERE meta_key ='album' ORDER BY post_id desc limit 4 " ,$db);
    while (
    $records = mysql_fetch_assoc($result)) {
    echo
    "<a href=http://nomesito.it/?p=". $records['post_id'] ."><img width='95' height='95' src=". $records['meta_value'] ."></a>";
    }
    e con limit 4 estrapolo 4 record(?).

    In html troverò stampato questo (circa):
    Codice HTML:
    <a href="url"><img src="url" width="95" height="95" /></a>
    <a href="url"><img src="url" width="95" height="95" /></a>
    <a href="url"><img src="url" width="95" height="95" /></a>
    <a href="url"><img src="url" width="95" height="95" /></a>
    Consumerò un'unica query?



    Oppure consumerò 4 queries?

    Ultima modifica di musicanapoli : 11-04-2010 alle ore 19.39.47

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,148

    Predefinito

    consumi 1 query... La query la esegui con mysql_query() per avere il risultato. Poi, come tratti il risultato a MYSQL non interessa più...

    Ciao!

  7. #7
    Guest

    Predefinito

    Non riesco a capire se vi ho fatto capire quello che intendo. Per cui faccio un giro di spiegazione.

    In questo caso lo script lo devo utilizzare per estrapolare dei dati da una tabella di Wordpress (ma potrebbe servirmi anche per altro).

    Nelle pagine di Wordpress, quando inserisco degli script (di default, funzioni creati apposta per WP) all'interno del template, utilizzo questo codice per sapere quante queries consuma ogni pagina aperta:
    Codice PHP:
    <?php echo get_num_queries(); ?>
    Ma se inserisco degli script come quello che ho postato nel primo messaggio, il numero di query eseguite non viene conteggiato dal get_num_queries() .
    Da qui viene il bisogno di sapere quante queries in più faccio.

    Così avevo utilizzato questo pezzetto:
    Codice PHP:
    $righe=mysql_num_rows($result);
    echo
    $righe;
    ma questo non conta il numero di queries come fa il get_num_queries() di WP?

    Tanto per info, il get_num_queries() è strutturato così:
    Codice PHP:
    function get_num_queries() {
    global
    $wpdb;
    return
    $wpdb->num_queries;
    }

  8. #8
    Guest

    Predefinito

    la query che esegui è una, il fatto che poi estrai un risultato, quattro o mille non c'entra, è sempre una query perché è sempre una sola interrogazione al database
    nel caso in cui eseguissi due mysql_query allora li useresti due query

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da basoftair Visualizza messaggio
    la query che esegui è una, il fatto che poi estrai un risultato, quattro o mille non c'entra, è sempre una query perché è sempre una sola interrogazione al database
    nel caso in cui eseguissi due mysql_query allora li useresti due query
    Ok, quindi un mysql_query = 1 query

    Un'altra domanda...
    Se al posto di limit 4 metto limit 50 (per esempio), non spreco più risorse al server? E' la stessa cosa o cosa cambia?

  10. #10
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Anche se rimuovi LIMIT userai una sola query!
    Le risorse andrai ad utilizzarle quando cominci ad estrarre i dati

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da musicanapoli Visualizza messaggio
    Se al posto di limit 4 metto limit 50 (per esempio), non spreco più risorse al server? E' la stessa cosa o cosa cambia?
    certo, ovviamente usi più ricorse... ma 50 risultati sono un niente, li regge senza neanche accorgersene

  12. #12
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Citazione Originalmente inviato da basoftair Visualizza messaggio
    certo, ovviamente usi più ricorse... ma 50 risultati sono un niente, li regge senza neanche accorgersene
    In realtà no.
    Limit serve solo per limitare i risultati in output, ma di fatto MYSQL fa tutta la select.
    La limit può essere utile per la paginazione o se fai molte query pesanti nella stessa pagina (ma di questa affermazione non ne sono troppo sicuro).
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

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
  •