Caricamento dati.

giovedì 27 novembre 2008 - 17.16

iif Profilo | Expert

Ciao a tutti, secondo voi, nel caricamento di 500 mila record, è più veloce un datareader o un datatable?
Grazie.

assiolle Profilo | Junior Member

datareader!

Ciao
Alessio
http://blogs.dotnethell.it/alessiop

assiolle Profilo | Junior Member

datareader!

Ciao
Alessio
http://blogs.dotnethell.it/alessiop

freeteo Profilo | Guru

Ciao,
diciamo che anche il datatable alla fin fine usa un datareader, non so se intendi per "datatable" un datable tipizzato creato da designer, quindi con TableAdapters.

Cmq si, il caricamento usa un datareader, con un codice tipico come questo:

DataTable table = new DataTable (); using(DbConnection cn = DbHelper.GetConnection() ) { DbCommand cmd = cn.CreateCommand(); cmd.CommandText = "SELECT ...."; cn.Open(); DbDataReader rd = cmd.ExecuteReader(); table.Load(rd); } return table;

come vedi, viene tornata una datatable, ma usa un Reader, alla fin fine questo è quello che fa anche il dataset tipizzato nel codice generato dietro all'aspetto grafico.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

R3GM4ST3R Profilo | Junior Member

ciao,
quando le righe da elaborare diventano tante, se non bisogna fare magheggi strani ai dati che si stanno importando ed i database sono entrambi sqlserver conviene (a mio avviso) fare la copia dei dati utilizzando una stored procedure o comunque uno script sql

freeteo Profilo | Guru

Ciao regmaster,
si posso concordare sull'uso della stored per velocizzare lato server l'operazione di lettura, ma a livello client direi che il collo di bottiglia sono sicuramente i 500 cicli che devi fare usando un DataReader per leggere i dati, d'altronde se devi leggerli, in qualche modo devi pur accederci e il metodo più veloce è sicuramente il reader.

Come dicevo prima cmq, anche il dataset tipizzato alla fine userà un reader, solo che se li carica anche in una datatable. Da codice diciamo che potresti leggerli e basta alleggerendo 1po il carico di memoria...però dipende sempre cosa devi farci con queste righe, se devi elaborarle o anche visualizzarle (a parte che 500.000 righe visualizzate a cosa servono)


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

R3GM4ST3R Profilo | Junior Member

Ciao Freeteo, certo hai ragione!
mi sa che ho cannato alla grande...
Non so per quale motivo ho scritto quì questa risposta...
Nel senso che era una risposta ad un altra domanda dove uno doveva caricare dei dati da un database ad un altro, mi sa che ho fatto un gran casino tra le mille finestre aperte...

Concordo con te anche nel fatto che 500mila righe a video non servono a molto, se non ad appesantire ulteriormente la datagridview che già flikkera di suo...
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein) [:O]
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5