如何解决SQL中的慢查询-CXCONSUMER等待类型
我有一个数据脚本,它在一个数据库中执行了大约3分钟,但是当我尝试在另一个数据库(不同服务器)上执行该脚本时,它花费了4个多小时,因此我将其杀死。 当我得到服务器状态时,查询从第一秒开始处于等待状态(CXCONSUMER类型)。而Who_2显示25条Cmd = OPEN CURSOR且24 Status =挂起且1 status =可运行的记录。 如何在sql中关闭并行性并运行脚本?
declare @PolicyId int,@ElhNo int,@Y int,@CapitalChangeZarib decimal(38,10),@PrmChangeZarib decimal(38,10)
declare PayPeriodCursor cursor local for
select Distinct CurrBNVer.PolicyId,CurrBNVer.ElhNo,CurrBNVer.Y,CurrBNVer.CapitalChangeZarib,CurrBNVer.PrmChangeZarib
from v_Table1 CurrBNVer
left join v_Table1 PreBNVer on CurrBNVer.PolicyId = PreBNVer.PolicyId and
CurrBNVer.ElhNo - 1 = PreBNVer.ElhNo
order by CurrBNVer.PolicyId,CurrBNVer.ElhNo
open PayPeriodCursor
fetch next from PayPeriodCursor into @PolicyId,@ElhNo,@Y,@CapitalChangeZarib,@PrmChangeZarib
while @@FETCH_STATUS = 0
begin
update Table2
set Filed1= 0.01 * @CapitalChangeZarib,Filed2= 0.01 * @PrmChangeZarib
where PolicyId = @PolicyId and
ElhNo >= @ElhNo and
Year >= ISNULL(@Y,0)
fetch next from PayPeriodCursor into @PolicyId,@PrmChangeZarib
end
close PayPeriodCursor
deallocate PayPeriodCursor
go
解决方法
最后,我发现了问题所在。我正在使用包含table1中的select *的视图 在我运行脚本之前,有人已经向table1添加了可为空的列。所以我需要在使用前刷新视图。但是我不知道那个增加的领域。因此,我的一个重要字段(用于连接中)对于整个表都返回null(该字段不可为空,但视图返回的是其他某个字段的值)。因此,由于空值,连接花费了这么长时间。我所做的只是刷新视图并解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。