Newsgroup: it.comp.software.database
Titolo: Access MDB più performante di MS SQL?

Ho creato il seguente semplice script in ASP che non fa nulla di "utile" ma
serviva solo per provare le
prestazioni di un DB SQL Express 2005:
dim objconn
set objconn = server.createobject("ADODB.CONNECTION")
objconn.connectionstring = "Driver={SQL Native
Client};Server=SERVER-RFHU51EI\SQLEXPRESS;Database=MainDB;Uid=UtenteSQL;Pwd=sesamo;"
dim objrs
set objrs = server.createobject("ADODB.RECORDSET")
objrs.open "SELECT * FROM tabella1 ORDER BY prova", objconn, 2, 3
do while not objrs.EOF
 objrs.delete
 objrs.movenext
loop
dim i
for i = 1 to 20000
 objrs.addnew
 objrs("prova")="a" & cstr(i)
 objrs("prova2")="b" & cstr(i)
 objrs.update
next
objrs.movefirst
do while not objrs.EOF
    objrs.movenext
loop
 objrs.close
 set objrs = nothing
 objconn.close
 set objconn = nothing
Il tutto, provato una decina di volte, anche riavviando il Server, impiega
per
essere eseguito dai 70 ai 73 secondi.
Poi ho sostituito il DataBase ed usato un "volgare" mdb cambiando nel codice
SOLO la stringa di connessione:
objconn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="
& Server.MapPath("\fpdb\dbprova.mdb") & ";"
Ottengo risultati che variano tra i 5 ed i 7 secondi!!!
Come diavolo è possibile che un mdb sia oltre 10 volte più performante di MS
SQL Express 2005?
Un grazie anticipato a chi mi potrà illuminare! 

 SQL Express 2005?
Perche' non stai testando solo la velocita' del db, stai testando
anche il tempo che ci mette a ottenere la connessione piu' altri
eventuali ritardi contingenti (es. l'mdb e' in locale e SQL Server in
rete?).
In ogni caso 70 secondi per inserire e leggere 20mila righe sono uno
sproposito.
Ciao,
Paolo

Paolo
SQL e relativo file MDF sono sulla stessa macchina sullo stesso ed unico 
hdd!
Che 70 secondi siano tanti me lo immaginavo ma non riesco a capire dove sia 
il problema!
Ho disinstallato completamente SQL, reinstallato tutto con l'ultima release 
disponibile e fila tutto liscio senza nessun errore.
Il risultato è sempre lo stesso! Ora tento con un altro computer per vedere 
se il problema è di Windows.
A parte il mio caso specifico comunque mi potete confermare che uno script 
tipo quello da me esposto dovrebbe essere eseguito più rapidamente in SQL 
oppure esistono casi in cui usare file MDB è prestazionalmente più 
"conveniente"?
Grazie. 

 
Io inizierei provando un "delete * from tabella1" invece di un loop sul 
dataset, essendo un "sql server"....
Una prova ulteriore potrebbe essere un insert into parametrico invece 
del ciclo for
Saluti Goblin
-- 
Ibis et redibis non morietur in bellum.

 "conveniente"?
Per script "atomici" (che si connettono, fanno poche operazioni su
poche righe ed escono) un db leggero fornisce _in generale_
prestazioni migliori.
Il tempo necessario per caricare i driver e stabilire la connessione
e' maggiore di quello che serve per aprire un file da parte di un
engine ridotto all'osso (come sqlite o access).
Un suggerimento: prova a modificare lo script per utilizzare una
connessione ODBC invece delle stringhe di connessione.
Ciao,
Paolo

 sul dataset, essendo un "sql server"....
Io invece farei una TRUNCATE TABLE dato che quest'ultima operazione viene 
"minimamente loggata" :-)
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org

 connessione ODBC invece delle stringhe di connessione.
Ecco, questo si che appesantirebbe ulteriormente la situazione, dato che 
costringeresti SQL Server a passare dallo stack ODBC, introducendo un 
ulteriore layer tra client e server :-)


 ulteriore layer tra client e server :-)
Si', pero' (se non ricordo male, e' qualche anno che non uso piu' SQL
Server) puoi impostare la connessione ODBC per conservare i dati di
connessione.
Dei tempi di risposta diversi, rispetto a quelli della connessione
diretta, potrebbero essere indicativi.
Ma lo dico col beneficio del dubbio... :-)
Ciao,
Paolo

 Paolo
Bye
-- 
Luca Bianchi
Microsoft MVP - SQL Server
http://blogs.aspitalia.com/lucabianchi/

 [...] quindi desumo che si operi nella modalità predefinita [...]
Solo una piccola nota: ci basiamo su supposizioni e ipotesi, l'unica 
cosa certa e' lo script. Meglio non dare nulla per scontato... :-)
Ciao,
Paolo

 > SQL Express 2005?
Ciao. Infatti non credo sia possibile. Però so per certo che SQL Server a
volte soffre di lentezza. E' un problema che ho riscontrato su SQL Server 7
e che mi ha fatto sbattere la testa per mesi. Lo incontravo solo su macchine
XP, ma non su tutte, con SS7 o con MSDE, con Office 2000/2003 o senza, con
sp2 o senza, con dieci o diecimila record, e a suo tempo avevo anche postato
qui senza molto successo.
Le cose sono tornate alla normalità quando ho compattato (Enterprise manager
di SS7, clic destro, Tutte le attività/Riduci database) il database. Peccato
che l'ho scoperto dopo molti mesi, però ora va.
Al tuo posto farei una prova. Spero ti sia utile. Ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/