我正在将大约300万行(ADODB记录集)的大型结果集加载到数据表中。将结果集加载到数据表中花费的时间太长。我想找到一种方法,只提取结果集的一部分,然后将其加载到DataTable中。或者,有没有办法直接直接读取记录集,而不是将其加载到数据表中然后读取它?
这是我用来填充DataTable的代码 -
OleDbDataAdapter oleDA = new OleDbDataAdapter();
DataTable dt = new DataTable();
oleDA.Fill(dt, myADODBRecordset);
答案 0 :(得分:0)
以下是一些需要考虑的选项:
只获取您真正需要使用的行和列。
获取一些数据,让用户在需要时请求下一组行。
编写优化的SQL查询
除非必须,否则不要使用DataTable,因为它包含的元数据信息比其他列表类型对象更多。
考虑使用托管.NET提供程序。
答案 1 :(得分:-1)
为什么要将如此大的数据加载到内存中?大型数据事务必须包含大量资源,因此优化代码或使用EF。