Newsgroup: it.comp.www.asp
Titolo: Ma i cursori, da parte stanno?

Ho letto l'articolo su 
www.aspitalia.com
 sulla connessione OLE-db.
Sotto la tabella di confronto delle prestazioni c'č questa piccola nota:
I tempi sono espressi in ... sono calcolate usando cursori server-side. (C'č
una minore differenza di prestazioni fra OLE-DB e ODBC usando i cursori
Client-side)
Personalmente ritenevo (forse stupidamente) che i cursori di un database
fossero sempre server-side! Qualcuno mi sa dare gentilmente qualche
spiegazione in merito?
Ciao e grazie!
Andrew

 ha scritto nel messaggio
news:dyOy4.17793$O3.1...@news.infostrada.it...

in questo caso per client  si intede l'applicazione che accede al database,
nella fattispecie la tua applicazione ASP.
--
CIAO!.db
Daniele "The Night Surfer" Bochicchio <webmaster(at)ASPItalia.com>
Moderatore di it.comp.www.asp - 
http://www.ASPItalia.com/newsgroup/icwa.asp
Leggi subito i nostri ultimi articoli:
- 'Introduzione ad ADSI'
http://www.ASPItalia.com/articoli/articoli.asp?data=20000313
- 'Connessioni con OLE-db'
http://www.ASPItalia.com/articoli/articoli.asp?data=20000309
Uno script al giorno? Solo su 
http://www.aspitalia.com/liste/usag/

Daniele "The Night Surfer" Bochicchio <webmaster(at)ASPItalia.com>
Grazie per la risposta ma mi sono venuti più dubbi di prima.
Da quanto ho capito (correggimi se sbaglio), se in una mia pagina ASP accedo
(per esempio) con il RecordSet a una tabella vi accedo con cursori
Client-side, giusto?
Allora l'utilizzo dell'OLE-DB è inutile visto il vantaggio minimo di
prestazioni. Come si può accedere al database con cursori server-side?
L'argomenti mi interessa per avere le maggiori prestazioni possibili.
Ciao e grazie!
Andrew

L'argomenti mi interessa per avere le maggiori prestazioni possibili.
La proprietà del recordset è CursorLocation, da specificare prima di
aprire un recordset. Capire i cursori è molto importante, perchè le
prestazioni delle tue applicazioni cambiano da così a così!
(immaginare il rigiramento della mano, please :-)
Spero di farti capire con questo elementare esempio:
openrecordset("SELECT * FROM PIPPO")
do while not recordset.eof
   recordset.movenext
loop
allora:
1) con CursorLocation=adUseServer
la openrecordset dura pochissimo, perchè in quel mentre il server
definisce un cursore e basta; ogni movenext dura un pochino, perchè
ogni volta il server effettua una fetch sul record successivo e te lo
manda al client.
2) con CursorLocation=adUseClient
la openrecordset dura di più: l'intero recordset viene sparato al
client, il quale se lo mette in memoria; ogni movenext è istantaneo,
perchè non è nient'altro che l'incremento di un puntatore in memoria.
E' chiaro che le cose sono un po' più complicate, comunque c'è tutto
ben scritto su MSDN, o sui SQL Books Online.
Oltre a capire i cursori, ti consiglio di sfruttare stored procedures,
specie per l'inserimento dei dati (piuttosto che una INSERT da ADO o
peggio una AddNew). In ogni caso, per verificare le prestazioni, usa
il Performance Monitor di SqlServer7. Se non usi SqlServer7, vabbè, le
considerazioni sono le stesse, piuttosto cambieranno gli strumenti!
--------
MATRO
YahooMessenger:matrello, Icq:matro
RealPopup, the freeware winpopup replacer
http://members.tripod.com/Matro/realpopup.html