我正在做一个需要缩小数据库的项目。在缩小之后,我检查sys.dm_db_index_physical_stats
并可以看到我的很多索引都超过 99% 是碎片化的 ( avg_fragmentation_in_percent
)。
对此,我IndexOptimize
由 Ola Hallengren 执行,代码如下:
EXECUTE [dbo].[IndexOptimize]
@Databases = 'Dynamic.Migrate',
@FragmentationLow = 'INDEX_REORGANIZE',
@FragmentationMedium = 'INDEX_REBUILD_OFFLINE',
@FragmentationHigh = 'INDEX_REBUILD_OFFLINE',
@FillFactor = '80',
@UpdateStatistics = 'ALL',
@StatisticsSample = '100',
@LogToTable = 'Y'
这成功完成,但是当我sys.dm_db_index_physical_stats
再次检查时,avg_fragmentation_in_percent
值没有改变,并且状态我的索引仍然碎片化超过 99%。
我在这里错过了什么吗?
这是来自 Ola Hallengren 的SQL Server 索引和统计维护文档:
因此,您提到的索引在执行后仍然是碎片化
IndexOptimize
的,因为您没有在代码中更改该值,因此很可能会因为页面少于 1000 页的最小值而被跳过。