在我的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行。
任何想法可能是什么或我应该从哪里开始寻找?
答案 0 :(得分:3)
对整个表格的查询;
Select * from Locations
不会引用任何索引,因此我认为索引重建是“解决”问题的纯粹巧合。您是否检查过SQL Server上的进程线程锁?表上可能存在一些锁定该查询的争用。