我们在SQL Server 2016中面临着一个奇怪的情况。我们的表有超过300000行。
我们在表上创建了一个索引。我们将此表用作联接的一部分(注意:联接关闭中的列已创建索引),但是查询优化器正在进行表扫描。
当我们查看统计信息时:
RowsInTable RowsSampled
NULL NULL
然后我跑了
UPDATE STATISTICS tablename
统计数据没有改变。
然后我们尝试重建索引:
ALTER INDEX ALL ON dbo.tablename
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON)
但同样:统计没有变化。
我们已经确认没有批量更新/插入/删除操作。
请帮助。
答案 0 :(得分:0)
我们尝试了太多的统计组合,但没有帮助。
最后,我们尝试了以下操作,并且成功了。
ALTER INDEX ALL ON dbo.Tablename
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,STATISTICS_NORECOMPUTE = ON)
注意:在制作产品之前,我们应该三思。我们应该知道表的数据大小是多少,否则将会阻塞。
我们仍然不确定是什么原因导致这种类型的行为,但是我怀疑我们在堆上有索引(非集群唯一索引)。