SELECT
'ALTER INDEX ['+ind.name + '] ON [dbo].[' +OBJECT_NAME(ind.OBJECT_ID) + '] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90);',
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 > 70
and isnull(ind.name,'') <> ''
and indexstats.index_type_desc = 'NONCLUSTERED INDEX'
ORDER BY indexstats.avg_fragmentation_in_percent DESC
上面的sql,是查找数据库中,索引碎片率高于70% 的数据库索引,并生成重构的语句,可把查询结果第一列复制出来,在数据库中执行索引重构,对性能有所提升有帮助