我目前使用 DataTable 从数据库获取结果,我可以在代码中使用它。

然而,网络上的许多示例都显示使用 DataSet 并通过集合方法访问表。

使用 DataSet 或 DataTable 作为 SQL 结果的存储方法是否有任何优势(性能方面或其他方面)?

有帮助吗?

解决方案

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

从性能角度来看,未优化的查询更有可能导致效率低下,而不是“错误”选择 .NET 构造。至少,这是我的经验。

其他提示

一个主要区别是数据集可以保存多个表,并且您可以定义这些表之间的关系。

如果您只返回单个结果集,但我认为数据表会更优化。我认为必须有一些开销(假设很小)来提供数据集的功能并跟踪多个数据表。

在 1.x 中,曾经有一些 DataTables 无法做到而 DataSets 可以做到的事情(不记得具体是什么)。所有这些都在 2.x 中发生了变化。我的猜测是,这就是为什么很多示例仍然使用数据集的原因。数据表应该更快,因为它们更轻量级。如果您只提取一个结果集,那么它是两者之间的最佳选择。

DataSet 的一项功能是,如果您可以在存储过程中调用多个 select 语句,则 DataSet 将为每个语句拥有一个 DataTable。

填充 DataTable 时可以使用一些优化,例如调用 BeginLoadData()、插入数据,然后调用 EndLoadData()。这会关闭 DataTable 中的一些内部行为,例如索引维护等。看 本文 了解更多详情。

无论如何,当您只处理单个表时,我发现的最大实际差异是 DataSet 有一个“HasChanges”方法,但 DataTable 没有。然而,两者都有一个“GetChanges”,因此您可以使用它并测试 null。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top