存储过程 - 一般或特定

时间:2008-12-04 02:10:06

标签: stored-procedures

在以下两种方法之间使用存储过程的首选方法是什么:

一个常规SP,例如'GetOrders',它返回表Order的所有列。应用程序的几个不同部分将使用相同的SP。

OR

几个更具体的SP,例如'GetOrdersForUse1'和'GetOrdersForUse2',它们返回所有列的子集。每个SP仅由应用程序的一部分使用。

在一般情况下,应用程序将仅使用SP返回的列的子集。我考虑使用特定方法的性能原因,但它真的值得额外的工作吗?我正在使用ASP.NET和SQL 2005开发一个网站。

3 个答案:

答案 0 :(得分:1)

像它所依赖的所有伟大事物一样。变体中的逻辑有多么不同。例如,如果唯一的区别是返回列,则所有节省的是网络上的一些带宽和一些内存,这两个内存比创建变体测试它们并维护它们的时间要便宜得多。

现在,如果有非常重要的不同选择逻辑(加入不同的表等),那么你可能最好有专门的SP。

最后一件事不要过早地优化。简单地构建它并且先工作,然后当你发现需要额外的毫秒时,你可以看一下调整。

答案 1 :(得分:1)

我会选择第二个选项,因为你应该从数据库中提取你不需要的数据(行或列) - 它会给DBMS带来不必要的压力并传输线路上无用的数据,浪费网络带宽。

答案 2 :(得分:1)

将它们视为函数,如果要编写单独的函数,则可能使用单独的存储过程。如果仍有疑问,请使用单独的存储过程,因为:

  • 它将保存带宽
  • 它会节省内存

我发现单独的存储过程比一个巨大的存储过程更容易维护。