Newsgroup: it.comp.lang.visual-basic
Titolo: [?] velocizzare caricamento dati

salve a tutti
sto mettendo a punto un sw e mi sono accorto che per caricare una ventina di
record su qualche listview ci impiega qualche secondo di troppo. il sw gira
su db access2000, ado 2.6 e db su server con connessioni tramite DSN.
ho 8 lv da caricare e le carico tramite 8 quer diverse utilizzando sempre lo
stesso recordset che provvedo ogni fine popolamento della lv ha chiudere e
settare a nothing.
ho provato a non fare gli ultimi passaggi detti sopra, a rendere invisibili
le listview ma nulla, continua a essere sempre un po lento, si vedono i form
sovrapposti e cose strane.
non capisco come mai, il pc dove gira l'applicativo è un p4, la rete a
100mbit ma anche in locale è lento. ho provato a compattare il db ma non è
cambiato nulla.
qlc mi sa dare qualche dritta?
grazie
ciao

 cambiato nulla.
Se è lento anche in locale, lasciamo stare la rete.
Bisogna vedere quanto sono performanti le query. Se i venti record che devi
visualizzare sono una estrazione da dieci milioni di record, direi che
qualche secondo è del tutto ammissibile. Se invece sono venti record su
ventidue nella tabella, c'è qualcosa che non va.
Ciao
Alberto

 ventidue nella tabella, c'è qualcosa che non va.
sono quasi tutte tabelle da 1000 a 1200record, tranne una che è da 20200 ca.
ho provato a non far fare la query sulla tabella con 20000 record e sulla
query dove fa somme, raggruppamenti ci mette sempre sembra quasi in loop
 questa tabella a ca 75000 record), però continua a essere un po lento e
mettere i 2 form sovrapposti.
ciao e
grazie

 sono quasi tutte tabelle da 1000 a 1200record
Il conteggio va fatto considerando anche i Join.
Se fai un join fra due tabelle con 1000 record, e non usi indici sulle
chiavi primarie, e peggio ancora se fai il join 'vecchio stile', ossia nel
Where, equivale a fare una select su una tabella da 1000x1000=1.000.000
record.
Se anche ottimizzando o eliminando i join, non ottieni risultati,
sinceramente non so cosa altro dirti.
Ciao
Alberto

non utilizzo nessuna join: la query è una cosa simile : select * from
nomatabellla where idcommessa='14'. simili a queste ce ne sono altre 5/6
quella piu complessa è
SELECT DISTINCTROW [Lavoro Giornaliero].Commessa, [Lavoro
Giornaliero].Reparto, Sum([Lavoro Giornaliero].[Ore Lavorate]) AS SommaOre
From [Lavoro Giornaliero] WHERE ((([Lavoro Giornaliero].Commessa)='" &
txtIDComme & "')) GROUP BY [Lavoro Giornaliero].Commessa, [Lavoro
Giornaliero].Reparto;"
tutto qua. e non ho capito perchè a volte si impalla mentre altre volte va
bene
ciao


 ha scritto
Scusa, maci, curiosità: adUseClient o adUseServer? e adOpen...?
Io ho fatto un sacco di prove. La maggiore velocità la si ottiene con
adUseServer e adOpenStatic e, se rinunci ad alcune cose, sempre con
adUseServer, con adOpenDynamic si ha il massimo.

 ha scritto nel messaggio
news:nhPN8.6808$j65.1...@twister1.libero.it...

E che cacchio ..
non gli confondere le idee ...
un cursore lato server non può essere statico nè forwardonlyscroll... dopo
che hai fatto la Open prova a leggere la proprietà CursorType .. che
certamente non sarà adOpenStatic
i cursori dinamici sono si veloci per il client ma se non ti servono per
aggiornare i dati in "tempo reale" (da leggersi con discrezione) ma solo per
fare lo scroll della tabella, allora provocano un inutile overhead sul
server.
Ci sono tanti post a riguardo .. proprio su questo NG ... qualche dettaglio
in più mi sembra di averlo letto sul NG di VC++ certamente non su quello
dedicato a Delphi (preve nota di sarcasmo)
Saluti

 Ci sono tanti post a riguardo .. proprio su questo NG ...
Sono certamente i miei. ;-)

 server.
a me serve che sia veloce a farmi vedere i dati sul client
Saluti