I'm experiencing some terrible performance with reading data off the OracleDataReader object compared to MS SQL Server. It is almost 10 times slower, which is unacceptable.
Below is some sample test code that both tests use. What's the most optimum way to read data from OracleDataReader, is there a better way than shown below?
I'm having hard time believing that ODP.Net can't even compare to SqlClient.
UPDATE: I've narrowed down the problem to fetching of text fields. For some reason ODP.Net is terrible at this. Any ideas how to fix it?
void ReadData(System.Data.IDataReader dr, int maxRows)
{
ArrayList rows = new ArrayList(maxRows > 0 ? maxRows : 1000);
object[] row;
int rowsRead = 0;
while (dr.Read() && ((maxRows == -1) || (rowsRead++ < maxRows)))
{
row = new object[dr.FieldCount];
dr.GetValues(row);
rows.Add(row);
}
rows.Clear();
}
Note(s):
Tried experimenting with FetchSize, didn't experience a big difference
Query run times aren't the issue here, only the data retrieval.
The data structures on both databases are identical.
Tried DataAdapter/DataSet combo with similar results.