服务器忙时需要不断重建的小表索引

时间:2013-11-18 12:12:01

标签: sql-server sql-server-2008 sql-server-2012

在我的SQL数据库(兼容级别SQL Server 2008,但在SQL Server 2012上),我有一个名为Locations的小表:21页中的2036行。

“从位置选择*”将在瞬间返回所有行。但是,在迁移到虚拟环境之后,在重负载下SQL将挂起,直到我重建该表上的索引:“ALTER INDEX ALL ON dbo.Locations REBUILD WITH(FILLFACTOR = 100)”。

然后没关系。直到它再次减速,我需要再次重建 - 有时5秒钟后!

当我运行:“DBCC CHECKTable(Locations);”时,我得到“位置”的DBCC结果。对象“位置”的21页中有2036行。

任何想法可能是什么或我应该从哪里开始寻找?

1 个答案:

答案 0 :(得分:3)

对整个表格的查询;

Select * from Locations

不会引用任何索引,因此我认为索引重建是“解决”问题的纯粹巧合。您是否检查过SQL Server上的进程线程锁?表上可能存在一些锁定该查询的争用。