【发布时间】:2019-09-30 00:02:50
【问题描述】:
我们使用的是 SQL Server 2012(完全最新)。我们一直在使用以下脚本检查碎片级别,但我们得到的结果与 SSMS 客户端向我们显示的结果截然不同。有人可以阐明正在发生的事情以及值得信任的事情吗?
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName,
ind.name AS IndexName, indexstats.index_type_desc AS IndexType,
indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats
INNER JOIN sys.indexes ind
ON ind.object_id = indexstats.object_id
AND ind.index_id = indexstats.index_id
WHERE indexstats.avg_fragmentation_in_percent > -1--You can specify the percent as you want
ORDER BY indexstats.avg_fragmentation_in_percent DESC
这是运行上述脚本的结果
这是通过 SSMS 客户端查看的结果
您可以看到结果大不相同。在聚集索引和非聚集索引上都观察到了这种情况。
如果重要,我们会定期更新统计信息,因此不确定发生了什么以及应该信任哪个
【问题讨论】:
标签: sql sql-server