Newsgroup: it.comp.lang.visual-basic
Titolo: Tabelle ADO e performance del programma

Salve mitico NG, un quesito per voi esperti:
ho un database MDB a cui accedo tramite Jet (ADO), contenente una tabella
"clienti" legata ad un datagrid; visto che ormai questa tabella contiene
migliaia di record e che le macchine su cui gira il mio programma non sono
esattamente "all'ultimo grido" e iniziano quindi ad avere qualche
rallentamento, pensavo di alleggerire il lavoro "sfrondando" la tabella dai
record più vecchi (ad es. quelli il cui ordine risale a tot mesi fa o più);
per fare questo mi vengono in mente due soluzioni:
1) aprire il recordset con la clausola WHERE in modo da escludere
determinati record;
2) creare nel database un'altra tabella "clienti_vecchi" in cui
periodicamente trasferire i record meno recenti.
Chiedo a voi, in termini puramente di prestazioni c'è una delle due
soluzioni preferibile rispetto all'altra o sono equivalenti? O altrimenti
avete qualcosa di ancora meglio da suggerire?
Grazie per l'attenzione e soprattutto per le preziose "dritte" che ho avuto
in passato spulciando i vari post :)
Ciao!

Beh io ti consiglierei di lasciare la tabella deiclienti cosě com'č, 
altrimenti per incrociare i dati con altre tabelle dovresti perdere la 
testa fra due tabelle clienti piuttosto che con una sola.
Ti suggerisco di usare un FILTRO nel form dei clienti: una casella di 
testo in cui far scegliere all'operatore I CLIENTI DEGLI ULTIMI [TOT] MESI.
Al massimo questo parametro lo salvi in un file.ini di impostazioni, in 
modo da caricarlo ad ogni avvio del programma.
In questo modo chi usa il programma visualizza un certo numero di 
clienti per volta.
-- 
Quando noi ignoranti eravamo di piů,
tutto era piů bello...
(Adriano Celentano)

 modo da caricarlo ad ogni avvio del programma.
Si infatti era la mia prima idea (filtro o where, poi si vede) ma mi
chiedevo dal punto di vista delle prestazioni cosa accade, cioè se applico
un filtro o un where l'esecuzione è effettivamente più agile oppure il pc
deve comunque fare i conti con l'enorme tabella sottostante? No perché in
questo caso preferisco dividere i record in 2 tabelle.... Spero di essere
stato chiaro, ma non ci giurerei :)

Allora... per FILTRO non intendevo un .Filter (che implica l'aver 
caricato comunque molti più dati).
Fai scegliere all'operatore il numero di mesi oltre i quali un cliente 
si considera "vecchio" e quindi al click sul tipico pulsante FILTRA 
ri-apri la tabella con la clausola WHERE.
Non credo affatto che le prestazioni siano influenzate per la grossa 
tabella. I DataBase servono proprio per scegliere un sottoinsieme di 
informazioni da una grossa quantità di dati :)
Quindi fai così che non te ne pentirai :D
-- 
Quando noi ignoranti eravamo di più,
tutto era più bello...
(Adriano Celentano)

 ha scritto nel messaggio
news:4148803d$1...@x-privat.org...


 -- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
New Entry nel bestiario!
:-)

 su table...e fai tutto di filter???????
No nessun datacontrol, tutto tramite codice; ma credo che in realtà la mia
domanda non sia ancora stata ben compresa, sicuramente per mia pecca di
chiarezza, ci riprovo:
un recordset da 100 record creato con WHERE da una tabella contenente 10000
record, OK?
siamo sicuri che abbia la stessa agilità e performance rispetto ad un
recordset da 100 record creato senza WHERE da una tabella contenente appunto
100 record?
Questo è il mio dubbio....