如果我在 DataSet 而不是 DataTable 中检索数据,是不是有任何区别[重复]

Posted

技术标签:

【中文标题】如果我在 DataSet 而不是 DataTable 中检索数据,是不是有任何区别[重复]【英文标题】:Are there any differences if I'm retrieving data in a DataSet instead of a DataTable [duplicate]如果我在 DataSet 而不是 DataTable 中检索数据,是否有任何区别[重复] 【发布时间】:2011-11-25 17:22:01 【问题描述】:

可能重复:Datatable vs Dataset

如果我使用DataSet 而不是DataTable 填充数据,我想知道在内存、效率方面的差异。

我想向第三方解释这一点,所以需要强有力的理由。

【问题讨论】:

如果您只检索单个表,那么使用 DataSet 只是不必要的开销 - 在内存和性能方面 【参考方案1】:

DataSet 是数据库的内存表示,它包含一个集合DataTableDataRelation 对象用于关联这些表。 另一方面,DataTable 表示任何“单个”数据库表的内存数据缓存。

因此,如果您只处理单个表,那么最好使用DataTable 而不是DataSet

【讨论】:

【参考方案2】:

DataSet 可以保存多个 DataTables,并且数据集维护一些内部索引以提高查找和选择等操作的性能。

一些有趣的讨论

How can I improve the loading of my datasets

Datatable vs Dataset

【讨论】:

【参考方案3】:

这实际上取决于您带回的数据类型。由于 DataSet(实际上)只是 DataTable 对象的集合,因此您可以将多个不同的数据集返回到单个对象中,因此更易于管理。

性能明智的数据集传输比数据表需要更多时间,因为数据集是数据表的集合

see this for more details

【讨论】:

不仅仅是DataTable 的集合——DataSet 还包含数据关系甚至更多开销 DataSet 需要大量内存。如果有问题的 DataTable 之间没有任何关系,请不要使用它们。

以上是关于如果我在 DataSet 而不是 DataTable 中检索数据,是不是有任何区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SqlClient.SqlDataAdapter.Fill(DataSet) 结果如果不选择查询

为啥我在 DataGridView 中有问号而不是文本?

我如何使用 GroupBy 而不是 Map over Dataset?

ADO.NET复习总结-断开式数据操作

在Cassandra中用新的键值对更新地图类型列,而不是完全覆盖地图。

javaAPI 中是不是有将 Dataset<Row> 转换为 map() 并返回 Dataset<Row>?