我正在使用c#。
我在表格中有数据。该表有5列整数和小数值。它中有大约30,000行。
将此内容传输到我的应用程序的最快方法是什么?
我尝试过使用DataReader,迭代它,并使用Read(),GetDecimal和GetInteger函数。但它很慢。
使用sqladapter将表绑定到DataTable会更快吗?
答案 0 :(得分:4)
不,绑定到DataTable不会比数据读取器快;实际上它会增加开销。
我会创建一个与表匹配的类,并使用数据读取器(手动)或“dapper”将其填充到List<T>
。这两者之间没有太大的速度差异,因为大量的分析:这是你能得到的速度(没有将数据移近以避免局域网)。
一个选项可能是在本地缓存数据,因此大多数时候你会读到你根本没有点击数据库。我建议使用protobuf-net序列化到本地磁盘上的文件;再次 - 你将获得最快的速度。您还可以存储一些令牌,以便您可以判断数据何时过时 - 可能是最后一个时间戳或类似的。然后你只需检查数据库以查询最新的时间戳;如果相同,请从您的本地副本中读取。否则从DB加载,然后重写本地副本。
答案 1 :(得分:0)
与使用DataTable相比,DataReader选项更快,占用的内存更少;但这取决于你如何使用这些选项。
•如果使用DataReader迭代并创建自定义类的对象集合,那么显然读者很快。
•但如果你迭代阅读器并创建一个DataTable,那么它将对性能产生负面影响。