Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Poblema prestazioni
martedì 21 novembre 2006 - 10.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
a.cincischio
Profilo
| Newbie
41
messaggi | Data Invio:
mar 21 nov 2006 - 10:07
Salve ragazzi, un piccolo problema.
Sto impattando e cercando di risolvere alcuni problemi di prestazioni inerenti c# e oracle e mi viene un dubbio.
Secondo voi qual'è il miglior comando (esclusivamente da un punto di vista prestazionale) per recuperare dei valori da un database ed inserirli in un datatable c#?
Io utilizzo questi comandi :
// apro il command
OracleCommand myCommand = new OracleCommand("Select * from pippo", myConn);
// eseguo la query
OracleDataReader myRead = myCommand.ExecuteReader(CommandBehavior.SingleResult);
DataTable MyTable = new DataTable();
MyTable.Load(myRead);
La query punta ad una sola tabella e restituisce sempre una batteria corposa di risultati.
Secondo voi sto facendo bene o c'è di meglio?
Grazie,
Alessio
Djdee86
Profilo
| Newbie
39
messaggi | Data Invio:
mar 21 nov 2006 - 11:46
Potresti provare a prendere dalla tabella solo una parte dei record (con una limit o qualcosa del genere ......) e poi dare la possibilità all'utente di andare in ricerca.......
Diego Degli Esposti
a.cincischio
Profilo
| Newbie
41
messaggi | Data Invio:
mar 21 nov 2006 - 12:25
un limite già c'è, in quanto nella where viene effettuato un between fra due date.
Non uso "*" ma i campi che mi interessano.
Utilizzo un datatable proprio per evitare di dover interrogare più volte la tabella ad ogni giro.
COn il datatable almeno riesco a fare delle select utilizzando la memoria che sono mille volte più veloci.
Ale.
Djdee86
Profilo
| Newbie
39
messaggi | Data Invio:
mar 21 nov 2006 - 12:43
Io per riempire un datatable uso ....
Friend Function OpenDataTable(ByVal Strsql As String, ByRef dtable As DataTable) As Boolean
Dim Adapter As New OdbcDataAdapter(Strsql, conn)
Adapter.Fill(dtable)
If dtable.Rows.Count <> 0 Then
Return True
Else
Return False
End If
end function
con sqlServer 2000 e non ho grandi problemi di prestazioni........magari prova anche tu
ad usare un dataadapter al posto di un datareader.....
Diego Degli Esposti
a.cincischio
Profilo
| Newbie
41
messaggi | Data Invio:
mar 21 nov 2006 - 12:48
Uso il metodo select in un paio di punti ma non ho risultati di performance disastrosi anzi.
Il problema purtroppo sembra stare a monte, ossia sul database (ci stanno lavorando i sistemisti) ed esce dalle mie competenze.
Nel mio piccolo non posso fare altro che ottimizzare il più possibile c#.
proverò anche la soluzione dataadapter.
Ale.
a.cincischio
Profilo
| Newbie
41
messaggi | Data Invio:
mer 22 nov 2006 - 17:27
Ma se ho una tabella da 800.000 record circa da interrogare 4 volte in un ciclo, non sarebbe meglio caricarla in memoria?
Il problema è che mi va in timeout se provo a metterla in un datatable ed il rischio è di fare un lavoro inutile.
Che dite, meglio fare 4 select (con il conseguente rallentamento) oppure trovare una strada diversa?
Ale.
Torna su
Stanze Forum
Elenco Threads
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 !