Newsgroup: it.comp.appl.access
Titolo: Rendere una super Query più performante

Access 00/XP
Buongiorno a tutti.
Ho effettuato una mega query che contiene tanti campi calcolati; la trovo un 
bel po lenta, come posso fare per renderla più performante ?
Ho pensato di chiedere un consiglio prima di smontare tutta la query e 
rifarla distribuendo il lavoro fra più query, richiamando queste in 
un'ultima query con i dati già calcolati.
Ciao, Bruno

 ha scritto nel messaggio 
news:46665434$0$10624$4faf...@reader2.news.tin.it...

==============================
Volevo precisare che per campi calcolati intendevo con calcoli del tipo
RottaVera: IIf([DiffLat]=0 And 
[DiffLong]=0;"FERMO";Round(IIf([Cardini_Rotta_Q]="NE";[Rotta_Q];IIf([Cardini_Rotta_Q]="SE";180-[Rotta_Q];IIf([Cardini_Rotta_Q]="SO";180+[Rotta_Q];IIf([Cardini_Rotta_Q]="NO";360-[Rotta_Q];IIf([Cardini_Rotta_Q]="N";360;IIf([Cardini_Rotta_Q]="S";180;IIf([Cardini_Rotta_Q]="E";90;IIf([Cardini_Rotta_Q]="O";270))))))))))
infatti nell'eseguire la query, i risultati appaiono lentamente, quasi come 
se il Computer non avesse abbastanza risorse.
Tenete presente che a casa ho un PC con grandi risorse, mentre in ufficio ho 
un PC con risorse medio basse; quest'ultimo PC nell'esecuzione della query 
conntenente la formula di cui sopra mi da il messaggio "Risorse 
insufficienti" o query troppo complessa. Togliendo la formula la query la 
esegue normalmente, anche se lentamente, lentamente per la presenza di altre 
formule un po complesse.
Bruno 

 Bruno
In questi casi io creo una tabella temporanea che contiene i valori selezionati e poi con le query di aggiornamento scrivo i valori.
Aumenti i passaggi (2 invece di 1) ma in alcuni casi dividere i "compiti" è più immediato che "farne tanti tutti insieme"...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f48a1l$lbc$1...@tdi.cu.mi.it...

=====================
Per poca esperienza in materia non ho ben capito quanto hai scritto e, 
inoltre, non saprei neanche da dove cominciare per creare una tabella 
temporanea.
I valori da me utilizzati sono relativi a delle coordinate, con campi 
divisi, qunidi ad esempio :   NumeroProgressivoPunto    N  39  41  56.2   E 
008  15  26.3
Nella stessa query, oltre a far ricercare i dati in questione, ho fatto 
ricercare anche gli stessi record, ma con la formula per cercare il 
"RecordCorrente +1 (successivo).
Questo secondo me fa già lavorare tanto la query, poi ci sono tutte le 
formule di calcolo simili a quela sopra. Non so immaginare quanto renda più 
veloce creare una tabella temporanea o creare 2 query, una per la ricerca 
dei dati e una per i calcoli. Mi sa che ci provol.
Se mi illumini su come procedere nel tuo modo, se non ci vuole uno 
scienziato, provo anche quanto da te consigliato.
Ciao, Bruno
 

 Ciao, Bruno
La tabella temporanea è detta così perché è temporaneo il contenuto, ossia 
viene svuotata e riempita di nuovo. Oppure è creata al momento e poi 
eliminata.
Però se deve essere sempre utilizzata conviene il primo metodo.
Quindi per creare la struttura non fai altro che trasformare la tua query di 
selezione in query di creazione tabella; la esegui e aspetti il tempo che ci 
vuole, poi la query la chiudi senza salvarla.
Appena terminata la creazione la tabella spostala in un mdb esterno e poi 
ricolleghi la tabella nel tuo mdb; questo ti evita il rigonfiamento dell'mdb 
quando riempi la tabella temporanea.
Fai questo intanto...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio 
news:f4947m$mbb$1...@tdi.cu.mi.it...

Scusa, per errore ho inviato il post uguale a quanto sotto alla tua e-mail.
Mhhh, non mi convince tanto questo metodo, mi sembra un po macchinoso; mi sa
che continuo sulla mia strada.
Ho provato a fare le 2 query, risulta un poco più veloce ma non tanto da
preferirle ad una singola query.
Ciao, Bruno

 Ciao, Bruno
Ciao.
-- 
Sergio MAZZA