sql-server – 什么是更好的 – 将可选参数添加到现有SP或添加新SP?
|
我有一个生产SQL-Server数据库(报告),它有许多存储过程.
1默认参数用于控制流量 通过添加标志作为默认参数来更新现有SP并控制新功能,以控制代码路径.通过使用默认参数,如果Parameter的值设置为true,则仅调用新功能.默认情况下,它设置为False.
>不需要新对象.
>由于现有SP已修改,因此需要测试现有功能以及新功能. 2新的存储过程 将为任何更改SP的签名(输入/输出)的要求创建新的存储过程.新的SP将为现有的东西调用原始存储过程,并在其上添加新需求的逻辑.
>这里的好处是不会对现有程序产生影响,因此旧逻辑不需要测试.
>只要请求更改,就需要在数据库中创建新对象.这将是数据库维护的开销. 执行计划会根据添加新参数而改变吗?如果是,那么这可能会对未请求新列的用户产生负面影响. 考虑到SP是数据库的公共接口,如果选择2,接口应该是不可变的? 什么是最佳做法,还是取决于具体情况,选择期权时应该是主要的驱动因素? 提前致谢! 解决方法引用你的第一个选择的缺点:
我个人认为这是不修改现有存储过程以容纳新列的最大原因. 当bug出现具有多个分支的存储过程时,调试变得非常困难.另外,正如您所暗示的那样,执行计划可以使用分支/ if语句进行更改. (sql using different execution plans when running a query and when running that query inside a stored procedure?) 这与面向对象的编码非常相似,你的直觉是正确的,最好是扩展现有对象而不是修改它们. 我会选择方法#2.您将拥有更多对象,但至少在出现问题时,您将能够知道受影响的存储过程具有有限的范围/影响. 随着时间的推移,我学会了水平地而不是垂直地增长对象/数据结构.换句话说,只要做出新的东西,不要让现有的东西变得越来越大. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
