什么表现更好:多个单结果sql server存储过程或单个多结果存储过程

时间:2010-08-09 16:44:28

标签: c# asp.net sql-server

背景:我专门为ASP.NET应用程序使用存储过程。我正在使用DataReader加载数据集对象。

4 个答案:

答案 0 :(得分:4)

单个过程返回单个结果(代码维护,简单和程序重用),然后只需一个调用就可以调用所有过程:

command = new SqlCommand(@"
exec usp_proc1 @param1, @param2;
exec usp_proc2 @param1, @param3;
exec usp_proc3 @param2, @param4;");

或者您可以创建一个包装器过程,只调用各个过程并调用包装器。总的来说,我说一次往返的好处太好了,不容忽视。

答案 1 :(得分:1)

恕我直言,单个多结果存储过程将表现得更好,因为只会执行到SQL服务器的单个网络往返。

答案 2 :(得分:1)

如果它是单个数据集,我将使用单个SP并让您的SP返回您的数据集所需的内容。让SP为您工作更快更安全,一次调用连接比调用多次加载单个数据集更有效。

答案 3 :(得分:0)

在单个查询中返回所有数据几乎总是更好,除非这会对应用程序施加过多的责任来管理该数据的形状。当然,如果您返回数百万行,如果可能的话,您可能希望将其分解为更懒惰的东西:)