我目前使用DataTable从数据库中获取结果,我可以在我的代码中使用。
但是,Web上的许多示例都使用DataSet代替并通过collections方法访问表。
使用DataSets或DataTables作为SQL结果的存储方法是否有任何优势,性能方面或其他方面?
答案 0 :(得分:86)
这实际上取决于您带回的数据类型。由于DataSet(实际上)只是DataTable对象的集合,因此您可以将多个不同的数据集返回到单个,因此更易于管理的对象中。
在性能方面,您更有可能从未经优化的查询中获得效率低于.NET构造的“错误”选择。至少,那是我的经历。
答案 1 :(得分:21)
一个主要区别是DataSet可以容纳多个表,您可以定义这些表之间的关系。
如果你只返回一个结果集,我会认为DataTable会更优化。我认为必须有一些开销(授予小)来提供DataSet所做的功能并跟踪多个DataTable。
答案 2 :(得分:6)
答案 3 :(得分:6)
DataSet的一个特性是,如果可以在存储过程中调用多个select语句,DataSet将为每个语句分配一个DataTable。
答案 4 :(得分:3)
填充DataTable时可以使用一些优化,例如调用BeginLoadData(),插入数据,然后调用EndLoadData()。这会关闭DataTable中的一些内部行为,例如索引维护等。有关详细信息,请参阅this article。
答案 5 :(得分:0)
DataTable对象将表格数据表示为行,列和约束的内存表格缓存。 DataSet包含一组DataTable对象,您可以使用DataRelation对象将它们彼此关联。