SQL查询性能 - 哪种方法更好?

时间:2012-07-06 13:57:30

标签: c# sql performance tsql stored-procedures

我不得不从SQL Server返回几个记录集来构造一个C#对象。虽然EF目前不支持(可能是beta版本)返回这样的复杂对象,但我不得不求助于使用ADO.NET返回一个DataSet来检索数据,然后将其转换为令人愉快的C#表示,请参见下文。

SELECT * FROM ...
exec dbo.usp_SP1 @ProductID,@CatalogName
exec dbo.usp_SP2 @ProductID,@CatalogName    

最好减少数据库调用,但是由于执行此查询的方式会使每个DataSet的多个请求最差?

2 个答案:

答案 0 :(得分:0)

一个数据库往返总是比三个(或两个)更好。

即使使用这组查询,您的代码也可以是干净的。您只需连续三次致电DataTable.Load,即可从DbDataReader加载所有三个结果集。

所以是的,我推荐一个更大的查询和一个DataSet用于所有结果集。

答案 1 :(得分:-1)

您可以在dataset内引用每个表格结果。 ds.Tables[index].Rows...。因此,我会拨打一个电话,获取所有数据,然后通过是否调用另一个sproc或只是一个简单的SELECT来返回它。