以下菌属: 我有从1/2分钟至4小时的任何地方运行(夜间处理期间)一个存储过程:长时间运行SP
update tableA
set tableA.Other_Flag_50 = isnull(Staging.other_flag_50, 0)
from tableA
inner join (
select acct_nbr,
appl_code,
Other_Flag_50
from tableB
) Staging on tableA.lnhist_acct_nbr = Staging.acct_nbr
and tableA.lnhist_appl_code = Staging.appl_code
我跑在探查阻断报告在2晚一排,首先在10分钟间隔,然后在5分钟。存储过程从不显示为被阻止(但会阻止其他查询)。
有关优化这个的任何想法?用联接帮助创建一个视图? (来自tableB的acct_nbr,appl_code,Other_Flag_50)谢谢!
你检查如果表上有任何索引?也许你需要添加一个索引来提高这个语句的性能。你是否也检查过SSMS中更新语句的执行计划(假设你使用的是SQL Server)?它会告诉你是否正在进行表格扫描等,并可能帮助识别是否需要索引。 –
你在使用什么数据库?我很惊讶这是在做你期望的事情,因为TableA在update子句和from子句中有相同的别名。我不能发誓SQL从不支持这一点,但我通常不会在更新查询中提及表名两次。 –