- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [SQL] Lentezza caricamento recordset
-
[SQL] Lentezza caricamento recordset
Buongiorno.
Appena iscritta e subito a chiedervi un consiglio.
Ho un problema. Devo visualizzare a video un recordset.
La query è abbastanza complessa.
Ora c'è un recordset dentro un altro recordeset...rallentando tutto in modo esagerato. ma purtroppo fino ad ora non sono riuscita a trovare una soluzione con una query unica.
allora la prima query fa un raggruppamento. il problema è che ogni record deve soddisfare la condizione della seconda query.
Sono riuscita a unire le due query ma così facendo mi perdo il raggruppamento!1° QUERY
SELECT <CAMPI>
*FROM ((TB1 INNER JOIN TB2 ON TB1.A = TB2.A) *
*INNER JOIN *
*TB3 ON *
*TB2.B = TB3.B) INNER JOIN *
*TB4 ON *
*TB1.C = TB4.C WHERE *
*<CONDIZIONI> *
GROUP BY <CAMPI GRUPBY> ORDER BY ...2° QUERY
*SELECT * FROM **(SELECT * FROM *
*TB1 LEFT JOIN TRIBUTI ON *
*TB1.A=TB2.A WHERE *
*TB1.B=<VARIABILE DELLA PRIMA QUERY>) AS Q1 **LEFT JOIN *
*(SELECT * FROM *
*TB1 LEFT JOIN TB2 ON *
*TB1.A = TB2.A WHERE *
*<CONDIZIONI>) AS Q2 *Avete qualche suggerimento?
Grazie in anticipo del vostro aiuto.
-
Prima di entrare nel merito della query, dovresti fornire maggiori elementi sulle tabelle..chiavi, indici etc.
Di solito le query poco performanti derivano da scarso design delle tabelle.
-
Ehm...il problema è che il db non l'ho creato io.
Mi è stato chiesto solo di gestire l'interfaccia web.
Cmq ha solo un campo chiave per ogni tabella.
(tra l'altro di testo :x; è un progressivo)
-
@SSWeb said:
Ehm...il problema è che il db non l'ho creato io.
Mi è stato chiesto solo di gestire l'interfaccia web.
Cmq ha solo un campo chiave per ogni tabella.
(tra l'altro di testo :x; è un progressivo)Potresti iniziare ad informarti su questi punti:
- con che frequenza vengono effettuate operazioni DML sui dati (insert, update, delete)
- se puoi aggiungere indici su colonne
Se la 1) è POCO O NULLA e la 2) è SI allora vediamo di ottimizzare tutto , viceversa c'è poco da fare...
-
se usi SQLServer adopera l'analizzatore di query per vedere se realmete è lenta l'esecuzione (ma se mancano gli indici direi di si).
Se dal QueryAnalyzer ti risulta una velocità decente controlla le connessioni, (prediligi le native o OleDb), cerca di renderizzare pochi dati x volta sulla pagina etc etc
Ciao