与DataReader相比,DataSet真的很慢吗?

时间:2016-04-15 18:39:05

标签: .net

我正在尝试创建一个大型.Net应用程序,它将处理数据库中的一些数据(数据库上的所有可能操作,插入,视图,排序,基于行的计算......)。

我不是ADO的专家,我想确保我的架构是最佳的。所以我试图比较DataSet和DataReader以了解我何时使用哪一个。

我在Oracle中创建了一个虚拟表,我填写了2 000 000条记录。当我使用查询检查表的大小时:

select * from dba_segments where Owner = 'TESTUSER'

我为这张桌子获得了100 MB的东西。

我在MSDN中读到DataSet加载了关于表的所有内容,而DataReader是一个更快的前端读取工具。

我正在尝试测试每个限制,所以我编写了以下代码:

SQL = "Select * from HugeTable"
Command = New OracleCommand(SQL, Me.Connection)
TempDataAdapter = New OracleDataAdapter(Command)
TempDataAdapter.FillSchema(DataSet, SchemaType.Source, FullTableName)
TempDataAdapter.Fill(DataSet, FullTableName)

如果我的理解是正确的,我正在考虑从数据库加载100 MB的最后一行,我想这需要几秒钟(数据库在同一台计算机上) 然而,当我运行这段代码时,它是瞬间的(它在几百秒内运行,我无法理解为什么它。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

这完全取决于你正在做什么。你是对的 - 数据集确实将查询结果的全部内容加载到内存中,这可能是你在某些情况下想要的。

DataReader是一款"消防水带"在您阅读数据时为您提供数据。内存效率高但仅向前。 (DataSet是从Datareaders填充的!)

所以我认为你应该更多地关注你打算如何处理数据,以决定你如何阅读它。