我知道当我们谈论从数据库中获取数据时,关于快速到底有很多讨论。但是,我的问题仍然是,为了从DatagridView导出Excel工作表中的所有内容,我需要加载大量数据(在20.000行至500万行之间,具体取决于用户执行的条件)。
我知道我可以在DatagridView中设置查询的分页&我已经测试过了(可以很好且快速地工作),但是导出到Excel的最底层问题仍然存在,因此我需要获取所有内容。目前,我要做的是将数据加载到不同的线程中,以使UI在获取数据时不会冻结。
数据库中的查询已得到优化-不幸的是,这并不是一个简单的查询,因为它甚至使用带有联接的DB链接来生成最终结果集。但是从数据库的角度来看,我们别无选择。
我已经测试了所有我能想到的-使用DataAdapter.Fill&DataReader.Load方法,Datasets,DataTable甚至List
结果实际上令我有些惊讶-所有人都在谈论DataReader.Load通过DataAdapter.Fill方法的加载速度,并通过DataTable填充List
1。)填充列表
2。)DataReader.Load与DataAdapter.Fill几乎没有区别-有时是先获胜,有时不是,而且几秒钟之内就会出现差异。
无论如何,我尝试过的任何事情都没有产生预期的结果,因为大约200万行的数据大约在5分钟内被加载(在最佳情况下)。
在从速度方面填充数据时,有没有我能错过的所有超越这些方法的东西?也许有些缓存?
任何建议,谢谢!
P.S .:我会从一个简单的答案开始感到满意,这就是为什么我不包含任何代码的原因。