如何解决存储过程优化的执行计划?
| 如果您在存储过程中有多个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\',1)
end catch
解决方法
SQL Server将更好地优化“不存在”,因为您正在告诉自己想要什么。它可以跳过整个\“检索(很多)行\”,并且如果存在任何行,则只返回一个布尔值true / false
, 由于“您的行驶里程可能会有所不同”,因此最好在实时系统(或尽可能接近测试环境)上确定最佳解决方案。但是,如果要查看帐户表中是否有任何记录,请执行
SELECT COUNT(*) from accounts
。
使用不存在通常不利于优化,因此这种情况要容易一些。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。