选择没有锁定部分

时间:2011-09-09 11:36:22

标签: sql-server database sql-server-2008

我们的应用程序中有以下SQL命令。

SELECT trackerid,taskid,action,sendto, sendtofullname, recfrom, actiontime 
FROM [LO].[dbo].[TRACKER] WITH (NOLOCK) 
where [EVENTRECORDID] = ? and ACTION in (1,4,5,15,4000,4200) 
order by Actiontime

它跑了一段时间而且非常快,但是最后几天它变得极端缓慢。 我把它改成了

SELECT trackerid,taskid,action,sendto, sendtofullname, recfrom, actiontime 
FROM [LO].[dbo].[TRACKER] 
where [EVENTRECORDID] = ? and ACTION in (1,4,5,15,4000,4200) 
order by Actiontime

所以我删除了WITH(NOLOCK)部分。

又变得快了。它让我有任何意义,我不知道,为什么它有这种行为。我也担心它会再次变慢。 有人可以向我解释一下吗?

数据库服务器是MS SQL 2008

由于

1 个答案:

答案 0 :(得分:0)

我比较了执行计划,它们是相同的。

我想到了一件事。每天晚上我们执行索引重组(每周一次索引重建)。但在重组索引后,我们忘记了更新统计数据。可以有一些联系吗?