更新在SQL Server中暂停的查询

时间:2015-06-11 16:02:38

标签: sql-server sql-update

我处于报告开发之间,报告的主要数据集正在使用存储过程填充。一个特定的更新声明如下所示

UPDATE T1 
SET 
  T1.Status=T2.Status, 
  T1.ErrorMessage=T2.ErrorMessage, 
  T1.IssueStatus=T2.IssueStatus
FROM 
  #tmptblOtherSongs T1 
  INNER JOIN #tmpOtherSongStatus T2 ON 
    T1.SongCode= T2.SongCode AND 
    T1.SocietyCode= T2.SocietyCode AND 
    T1.TableName=T2.TableName 
WHERE  
  T1.SessionID='TRYFBGHk' AND 
  T2.Status IS NOT NULL

sp到达此特定更新查询时进入挂起状态。我尝试单独运行查询,但结果是相同的。它运行良好的少量数据,如数千,但问题发生在更多的数据。 有什么办法可以防止这种情况发生。我不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

当进程处于挂起状态时,它正在等待某事。通常它要么等待I / O(读取或写入数据,也可能与tempdb相关),要么等待阻塞结束。

如果没有阻塞,则很可能是I / O操作。如果某些内容看起来不正确和/或设置统计信息,则应查看执行计划,并检查哪些表导致大部分I / O.

通常可以通过添加索引来改进I / O,在您的情况下,我将开始查看T1.SessionID并在此之后查看T1& T2.SongCode和SocietyCode +可能是TableName,取决于每个值表中有多少行。