Newsgroup: it.comp.lang.visual-basic
Titolo: Da archivio random a database mdb

Mi consigliate ancora un po'?     :-)
Sto migrando un applicativo, che in un primo tempo gestiva pochi record, 
mentre adesso stanno superando le decine di migliaia...
All'inizio usavo un random file, accedendo direttamente ai record alla 
vecchia maniera. Adesso non è più possibile, per motivi di performance sulle 
ricerche, quindi sto passando al tipo mdb.
Siccome non sono molto ferrato sui database, anzi per meglio dire ne so 
davvero poco (mi occupo di protocolli di rete, non di programmazione), vi 
chiedo consiglio.
Ho visto che ci sono una miriade di soluzioni.
Per ora, dietro consiglio di un amico, mi sono limitato a creare il file 
*.mdb con Access, e popolare il database con le seguenti istruzioni:
-------------------------------------------------------------
Dim objConn As New ADODB.Connection
Dim ObjRst As New ADODB.Recordset
strconnessione = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =mydb.mdb"
Set objConn = New ADODB.Connection
objConn.Open (strconnessione)
Set ObjRst = objConn.Execute("INSERT INTO mytable ecc... ecc...")
-------------------------------------------------------------
Purtroppo ho notato che, a differenza della scrittura su file random, 
scrivendo lo stesso numero di record (attualmente circa 13000) il tempo è 
cresciuto a dismisura!
Sono passato dai due secondi scarsi ad oltre 15 secondi!
Siccome, lo ripeto, sono un perfetto niubbo sulla gestione dei database e 
sui metodi di accesso/scrittura/query, mi potete dare qualche dritta su 
quale metodo utilizzare per avere le migliori prestazioni possibili, in 
termini di pura velocità?
Il tracciato record è molto banale: un campo chiave ordinato, 5 campi 
stringa a lunghezza variabile (max 50). La tabella è unica.
Il database *.mdb si trova sullo stesso harddisk dove risiede e viene 
eseguita l'applicazione, in genere è un pc con un Windows "qualsiasi" (da 95 
a XP) senza alcun sql o altro motore per database preinstallato.
Grazie 1000 a tutti.
Bruno

 termini di pura velocità?
Un aiutino?!.....   :-(

 ha scritto nel messaggio 
news:e39rev$le0$1...@newsreader.mailgate.org...

1) DAO e' leggermente piu' veloce di ADO (ma di poco, tanto vale usare ADO)
2) Probabilmente Execute non e' velocissima per gli inserimenti ripetuti.
Prova innanzitutto con Recordset.Open, AddNew, Update.
3) Ottimizza i cursori. Static e Pessimistic nel tuo caso dovrebbero andare 
bene.
4) Se lavori in un ambiente single user usa i recordset disconnessi.
Cerca su Google al riguardo.

 Sono passato dai due secondi scarsi ad oltre 15 secondi!
zac
Come ti han detto ...probabilmente ci son delle ottimizzazioni da
fare...
MA COMUNQUE....che te frega!
15 secondi è un tempo accettabilissimo...ma anche mezzora...per una
procedura di UPGRADE.
Tu stai facendo quello...stai trasportando il tuo programma dalla
versione 1 alla versione 2...
Fai compiere ai tuoi clienti una procedura "una tantum".
tu avverti:
"Per ususfruire dei vantaggi della versione 2 è necessario aggiornare
il programma. Ciò può essere compiuto conttattando i ns uffici per
fissare un appuntamento con il ns tecnico ...oppure...lanciando il
prog...update.exe.....oppure...quello che vuoi!"
Non capisco il problema....
una volta compiuto l'upgrade hai tutto su mdb e i file random non hanno
più ragione di essere!!!
Ma che te frega di 15 secondi......
ma hai visto windows quando ti fa riavviare perchè ha aggiornato il
media player?
Altro che 15 secondi!
a me queste cose mi buttan via....
non siete mai contenti!
ROTFL!

 ROTFL!
Ok, ok, hai ragione... č che per mia natura sono un "perfezionista"... :-)
Grazie per le risposte, vale anche per gli altri che mi hanno dato ottimi 
consigli.
B.