与 MS SQL Server 相比,我在从 OracleDataReader 对象中读取数据时遇到了一些糟糕的性能。它几乎慢了 10 倍,这是不可接受的。
下面是两个测试都使用的一些示例测试代码。从 OracleDataReader 读取数据的最佳方法是什么,有没有比下面显示的更好的方法?
我很难相信 ODP.Net 甚至无法与 SqlClient 相提并论。
更新:我已将问题缩小到获取文本字段。出于某种原因,ODP.Net 在这方面很糟糕。任何想法如何解决它?
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();
}
笔记):
尝试使用 FetchSize 进行试验,并没有遇到太大的不同
查询运行时间不是这里的问题,只有数据检索。
两个数据库上的数据结构是相同的。
尝试了具有相似结果的 DataAdapter/DataSet 组合。