如果我在 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
是数据库的内存表示,它包含一个集合DataTable
和DataRelation
对象用于关联这些表。
另一方面,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) 结果如果不选择查询
我如何使用 GroupBy 而不是 Map over Dataset?