Ale*_*gas 3 sql stored-procedures
假设我有一个从 SELECT 查询返回数据的存储过程。我希望根据我传递的参数对这些结果进行稍微不同的切割。我想知道是设计多个存储过程(仅使用一个参数或不使用参数来执行此操作(例如 GetXByDate 或 GetXByUser))更好,还是使用一个具有多个参数的存储过程(例如 GetX)来执行此操作更好?
第一个选项的优点是它更简单并且可能更快,但缺点是查询的本质在存储过程中重复,并且需要在多个位置进行维护。
第二个选项的优点是查询仅出现一次,但缺点是查询更复杂并且更难以排除故障。
您在解决方案中使用什么以及为什么?
存储过程越复杂,SQL Server 就越难以正确编译并快速高效地执行。
即使在大型存储过程中,您也必须拥有多个查询副本,或者在其中添加大量 CASE 和 IF,这会降低性能。因此,将所有内容放在一起并不会真正获得太多好处。
根据我个人的经验,我还认为具有大量分支的大型 SQL sp 代码比几个较小且简单的存储过程更难以维护。
您可以考虑使用视图和 UDF 来减少查询代码的复制粘贴。
说如果你不关心性能(内联网应用程序,查询不是那么重,不要经常运行),你可能会发现拥有一个通用存储过程非常方便。