存储过程优化的执行计划?

| 如果您在存储过程中有多个if条件,那么我猜想执行计划的优化程度将有所降低,因此后者更好吗?
if not exists (select * from accounts)
 begin
  raiseerror(\'error\', 16, 1);
 end

begin try
select 1/0 from accounts
end try
begin catch
  raiseerror(\'error\', 16,1)
end catch
    
已邀请:
        SQL Server将更好地优化“不存在”,因为您正在告诉自己想要什么。它可以跳过整个\“检索(很多)行\”,并且如果存在任何行,则只返回一个布尔值true / false     
        由于“您的行驶里程可能会有所不同”,因此最好在实时系统(或尽可能接近测试环境)上确定最佳解决方案。但是,如果要查看帐户表中是否有任何记录,请执行
SELECT COUNT(*) from accounts
。 使用不存在通常不利于优化,因此这种情况要容易一些。     

要回复问题请先登录注册