Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277

    Velocizzare query caricamento attributi descrittivi

    Ciao a tutti.

    Ho il seguente quesito:

    in uno script ho una query esterna $qy1 che mi carica degli eventi padre.
    La query é:

    $qy1 = "SELECT * FROM PAR_EVENT_AUTH order by EVENT_NAME

    Voglio mostrare in una tabella tutti i suoi attributi. Alcuni attributi sono dei codici la cui descrizione è su un altra tabella.
    Devo quindi fare ulteriori query per caricarmi le descrizioni.

    Alla fine il risultato è:

    Codice PHP:

    $qy1 
    "SELECT * FROM PAR_EVENT_AUTH order by EVENT_NAME

    //Eseguo e controllo
    $result = execute_qy_err_detail_result($qy1$MyConn);


    //Visualizzo valori
    $i = 0;
    echo '<table width="
    100%" cellspacing="0" cellpadding="0" border="0">';
    while(
    $Values = mysql_fetch_array($result))
    {
    echo '<tr>';

    $EVENT['ID'] = $Values['EVENT_ID'];
    $EVENT['COD_LE']= $Values['COD_LE']; //qui ad esempio carico il codice azeinda

    $sel_qy = "SELECT LE_DESC FROM ANAGRAFICA_LE
    where COD_LE 
    '$EVENT['COD_LE']"; //query per caricare descrizione azienda

    $result = execute_qy_err_detail_result($sel_qy, $MyConn);
    $Values = mysql_fetch_array($result);
    $EVENT['
    LE_DESC'] = $Values['LE_DESC'];//carico finalmente la descirizone azeinda
    ....
    .... 
    Come posso velocizzare questo script? Tenete conto che gli attributi possono essere anche 4 o 5. Se la query esterna tira fuori 10 record, dovrei fare 40 query....

  2. #2
    Valuto se rispetto al numero di query singole che dovresti fare non è più conveniente una sola query che legge tutte le "LE_DESC" dalla tabella "ANAGRAFICA_LE" in una volta sola.
    L'opzione semplice sarebbe senza condizione WHERE, ma questa va bene solo se il numero di LE_DESC che mediamente devi leggere è abbastanza vicino al totale contenuto nella tabella.
    L'altra opzione è di recuperare tutto gli $EVENT['COD_LE'] che hai bisogno e fare una solo query (se si tratta di numeri con un WHERE COD_LE IN (....) ).

    È l'unico modo di velocizzare il tutto, ridurre ad una sola query per ottenere le LE_DESC.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.