是不是写一个更有针对性、参数更少的存储过程更好?

Ale*_*gas 3 sql stored-procedures

假设我有一个从 SELECT 查询返回数据的存储过程。我希望根据我传递的参数对这些结果进行稍微不同的切割。我想知道是设计多个存储过程(仅使用一个参数或不使用参数来执行此操作(例如 GetXByDate 或 GetXByUser))更好,还是使用一个具有多个参数的存储过程(例如 GetX)来执行此操作更好?

第一个选项的优点是它更简单并且可能更快,但缺点是查询的本质在存储过程中重复,并且需要在多个位置进行维护。

第二个选项的优点是查询仅出现一次,但缺点是查询更复杂并且更难以排除故障。

您在解决方案中使用什么以及为什么?

Ily*_*tov 5

存储过程越复杂,SQL Server 就越难以正确编译并快速高效地执行。

即使在大型存储过程中,您也必须拥有多个查询副本,或者在其中添加大量 CASE 和 IF,这会降低性能。因此,将所有内容放在一起并不会真正获得太多好处。

根据我个人的经验,我还认为具有大量分支的大型 SQL sp 代码比几个较小且简单的存储过程更难以维护。

您可以考虑使用视图和 UDF 来减少查询代码的复制粘贴。

说如果你不关心性能(内联网应用程序,查询不是那么重,不要经常运行),你可能会发现拥有一个通用存储过程非常方便。