Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28

Discussione: Query nella funzione

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322

    Query nella funzione

    Per cercare di velocizzare la lettura della query, la vorrei inserire in una funzione.
    Ora eseguo in modo procedurale una cosa del tipo:

    //1a query
    select argomento from tabella
    while
    {
    stampa a video argomento

    //2a query
    select sotto_argomento where argomento='estratto 1a query'
    {
    stampa a video i risultati sotto_argomento
    }

    }

    è piuttosto lento il tutto quando carica la pagina.
    Mi potete dare qualche spunto per come fare ad inserire le query in una function e poi semplicemente richiamarle?

  2. #2
    più che inserire le query in una funzione, seguirei la strada dei prepared statements:

    http://php.net/manual/en/pdo.prepared-statements.php

    che servono proprio per ottimizzare le query.

  3. #3
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    A parte l'ottimizzazione dipende da come è struturato il DB.

    Il problema è che fai #n query in base al risultato della prima...e questo è male, soprattuto perchè non saprai a priori quante query fai.
    Puoi fare così:
    Codice PHP:
    //1a query
    select argomento from tabella
    while
    {
    stampa a video argomento
    $argomenti 
    Argomento ",";
    }
    //2a query
    select sotto_argomento where argomento in($argomenti)
    {
    stampa a video i risultati sotto_argomento

    Per un esepio dell'IN nelle query
    http://www.w3schools.com/sql/sql_in.asp

    Dimenticavo
    Potresti anche fare la seconda query semplciemente usando una subquery
    select sotto_argomento where argomento in(SELECT Argomenti form tabella where balbla)

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322

    distinct

    //1a query
    select argomento from tabella
    while
    {
    stampa a video argomento
    $argomenti = Argomento + ",";
    }
    //2a query
    select sotto_argomento where argomento in($argomenti)
    {
    stampa a video i risultati sotto_argomento
    }

    così facendo non riconosce DISTINCT...

  5. #5
    Le prestazioni di una query dipendono da un sacco di cose: dal tipo di db utilizzato, dall'architettura del db (come dice URANIO), dall'utilizzo corretto di accorgimenti come gli indici (che se utiizzati male creano più problemi che altro), e chiaramente da come è scritta la query.

    Se cerchi un modo di velocizzare e dunque ottimizzare i tempi di risposta dovresti lavorare su tutte queste cose: perchè chiaramente tutto dipende da cosa devi reperire dal database.

  6. #6
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287

    Re: distinct

    Originariamente inviato da yhtr

    così facendo non riconosce DISTINCT...
    Perchè?
    Select distinct sotto_argomenti...

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322

    query

    Non mi ero espresso bene.

    Esistono tot argomenti (es: 10) e sottoargomenti (es: 100):
    così ogni argomento ha 10 sottoargomenti;

    con un'unica query dovrei ciclare argomenti e sottoargomenti:

    es:
    argomento1
    - sottoargomento1.1
    - sottoargomento1.2
    - sottoargomento1.3

    argomento2
    - sottoargomento2.1
    - sottoargomento2.2
    - sottoargomento2.3

    etc.

    query nella query rallenta notevolmente, cerco quindi una soluzione alternativa.

    Avevo anche pensato di eseguire una sola query dei sottoargomenti: come potrei però stampare a video gli argomenti una sola volta ?!

    l'impossibile a richiesta...

  8. #8
    usare order by?
    Ciao!

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    322
    ciao, quello già lo uso...

  10. #10
    E allora , perchè non ordini gli elementi in base al padre, e poi al figlio?
    Ciao!

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.