我目前使用 DataTable 从数据库获取结果,以在代码中使用。然而,许多网上的示例显示使用 DataSet,通过集合方法来访问表格。使用 DataSets 或 DataTables 作为 SQL 结果的存储方法,在性能或其他方面是否有优势呢?
这真的取决于您要带回的数据类型。由于DataSet实际上只是一组DataTable对象,因此您可以将多个不同的数据集返回到一个单独且更易管理的对象中。
在性能方面,您更有可能因为未经优化的查询而产生低效,而不是因为选择了“错误”的.NET结构。至少这是我的经验。
一个主要的区别是DataSets可以容纳多个表格,并且您可以定义这些表格之间的关系。
但如果您只返回一个结果集,我认为DataTable可能更加优化。我认为提供DataSet功能并跟踪多个DataTables必须有一些开销(虽然很小)。
在1.x版本中,DataTables无法完成的一些事情,DataSets可以(我不记得具体是什么了)。所有这些都在2.x中得到了改变。我的猜测是这就是为什么很多示例仍然使用DataSets的原因。DataTables应该更快,因为它们更轻量级。如果你只需要拉取单个结果集,那么它是两者之间最好的选择。
DataSet的一个特点是,如果您可以在存储过程中调用多个select语句,则DataSet将为每个语句创建一个DataTable。
在填充DataTable时,您可以使用一些优化技巧,例如调用BeginLoadData()、插入数据,然后调用EndLoadData()。这将关闭DataTable中的某些内部行为,例如索引维护等。请参见此文章获取更多详细信息。
DataTable对象表示行、列和约束的内存中表格缓存,用于表示表格数据。DataSet由一组DataTable对象组成,您可以使用DataRelation对象将它们相互关联。