简单的更新查询耗时太长

时间:2012-01-30 13:34:26

标签: sql sql-server tsql

我的数据库中有一个表CurrentStatus(合并复制中的订阅数据库) 列是StatusID {Primary Key + Clustered Index}, StatusName, StatusDate, UserID,CreatedDate, ModifiedDate, ModifiedBy, AllowDelete,AllowUpdate

CurrentStatus表为26000行

此表上的更新和删除突然花费了太多时间,比如1分30秒甚至5分钟。

以下查询需要花费一分钟才能执行。

update StatusMaster set StatusName='OK' where StatusID = 22

表上有以前的5个索引(即使这样,查询也用于快速执行。) 现在由于更新/删除查询没有执行,我删除了所有索引,只保留了两个索引 1)StatusID上的聚簇索引 2)rowguid列上的复制索引,它是由复制自动创建的唯一非聚簇索引。

当我进行备份和恢复数据库时,同一个表上的查询运行正常。

还有一件事是我从服务器上的大约20台机器每2分钟运行一次复杂的查询。

是什么导致此查询消耗这么多时间来执行?

Click here for Execution plan

3 个答案:

答案 0 :(得分:6)

我建议您通过UPDATE STATISTICS命令更新统计信息,例如:

UPDATE STATISTICS StatusMaster 

答案 1 :(得分:2)

经过大量的插入,删除,更新等操作后,您的表可能会碎片化,并且您的索引可能无法优化。我建议您重新索引和更新统计信息。

当您进行备份并恢复它时,我相信您正在完成与重新索引和统计更新相同的事情。

您应该定期安排这样的维护以保持性能。

答案 2 :(得分:0)

上次当一些简单的查询花了不正常的时间[在我们的小公司]时,这是由[幸运的非生产] SQL服务器中的RAID阵列损坏引起的。