我想知道是否最好有许多存储过程,或者一个具有多个if-else分支的存储过程。
我了解SQL Server将基于存储过程的最新执行来创建执行计划,因此,下次执行存储过程时,将使用不同的参数在IF语句中导致不同的路径,然后执行不同的执行计划将被编译和缓存。
我的主管说他想减少我们环境中的存储过程的数量,并指示我们使用if-else语句来区分我们拥有数据的各个区域之间的大小写。例如
if(@iso = 'Item1')
begin
if(@type = 'A')
begin
end
if(@type = 'B')
begin
end
if(@type = 'C')
begin
end
end
if(@iso = 'Item2')
begin
if(@type = 'A')
begin
end
if(@type = 'D')
begin
end
end
if(@iso = 'Item3')
begin
if(@type = 'B')
begin
end
if(@type = 'E')
begin
end
end
当执行此存储过程时,很可能每次都会提交不同的参数。随着执行计划的不断更新,这是否会引起大量的数据库争用?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句