在以下两种方法之间使用存储过程的首选方法是什么:
一个常规SP,例如'GetOrders',它返回表Order的所有列。应用程序的几个不同部分将使用相同的SP。
OR
几个更具体的SP,例如'GetOrdersForUse1'和'GetOrdersForUse2',它们返回所有列的子集。每个SP仅由应用程序的一部分使用。
在一般情况下,应用程序将仅使用SP返回的列的子集。我考虑使用特定方法的性能原因,但它真的值得额外的工作吗?我正在使用ASP.NET和SQL 2005开发一个网站。
答案 0 :(得分:1)
像它所依赖的所有伟大事物一样。变体中的逻辑有多么不同。例如,如果唯一的区别是返回列,则所有节省的是网络上的一些带宽和一些内存,这两个内存比创建变体测试它们并维护它们的时间要便宜得多。
现在,如果有非常重要的不同选择逻辑(加入不同的表等),那么你可能最好有专门的SP。
最后一件事不要过早地优化。简单地构建它并且先工作,然后当你发现需要额外的毫秒时,你可以看一下调整。
答案 1 :(得分:1)
我会选择第二个选项,因为你应该不从数据库中提取你不需要的数据(行或列) - 它会给DBMS带来不必要的压力并传输线路上无用的数据,浪费网络带宽。
答案 2 :(得分:1)
将它们视为函数,如果要编写单独的函数,则可能使用单独的存储过程。如果仍有疑问,请使用单独的存储过程,因为:
我发现单独的存储过程比一个巨大的存储过程更容易维护。