2017-09-11 07:52:50 -07:00
|
|
|
SELECT dbschemas.[name] as 'Schema',
|
|
|
|
|
dbtables.[name] as 'Table',
|
2019-06-18 16:01:43 -07:00
|
|
|
dbindexes.[index_id] as 'IndexID',
|
2017-09-11 07:52:50 -07:00
|
|
|
dbindexes.[name] as 'Index',
|
2019-06-14 20:54:55 -07:00
|
|
|
indexstats.partition_number,
|
|
|
|
|
FORMAT(AVG(indexstats.avg_fragmentation_in_percent), 'N2') AS avg_fragmentation_in_percent,
|
|
|
|
|
FORMAT(SUM(indexstats.page_count), 'N0') AS page_count,
|
|
|
|
|
'ALTER INDEX ['+dbindexes.[name]+'] ON [' + dbschemas.name + '].['+dbtables.[name]+'] REORGANIZE PARTITION = '
|
2019-07-11 22:34:56 -07:00
|
|
|
+ CASE WHEN EXISTS(SELECT TOP 1 1 FROM sys.partition_schemes s WHERE s.data_space_id = dbindexes.data_space_id) THEN CAST(indexstats.partition_number AS VARCHAR(3)) ELSE 'ALL' END + ';' AS CmdReorg,
|
2019-06-14 20:54:55 -07:00
|
|
|
'ALTER INDEX ['+dbindexes.[name]+'] ON [' + dbschemas.name + '].['+dbtables.[name]+'] REBUILD PARTITION = '
|
2019-07-11 22:34:56 -07:00
|
|
|
+ CASE WHEN EXISTS(SELECT TOP 1 1 FROM sys.partition_schemes s WHERE s.data_space_id = dbindexes.data_space_id) THEN CAST(indexstats.partition_number AS VARCHAR(3)) ELSE 'ALL' END
|
|
|
|
|
+ ' WITH (ONLINE = ON (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 1 MINUTES, ABORT_AFTER_WAIT = SELF)), '
|
2019-06-14 20:54:55 -07:00
|
|
|
+ 'SORT_IN_TEMPDB = ON);' AS CmdRebuild
|
2017-09-11 07:52:50 -07:00
|
|
|
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS indexstats
|
|
|
|
|
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
|
|
|
|
|
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
|
|
|
|
|
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
|
2018-12-31 12:47:41 -08:00
|
|
|
AND indexstats.index_id = dbindexes.index_id
|
2017-09-11 07:52:50 -07:00
|
|
|
WHERE indexstats.database_id = DB_ID()
|
2018-12-31 12:47:41 -08:00
|
|
|
AND indexstats.page_count > 100
|
|
|
|
|
AND dbindexes.[name] IS NOT NULL
|
|
|
|
|
GROUP BY dbschemas.[name],
|
|
|
|
|
dbtables.[name],
|
2019-06-18 16:01:43 -07:00
|
|
|
dbindexes.[index_id],
|
2019-06-14 20:54:55 -07:00
|
|
|
dbindexes.[name],
|
2019-07-11 22:34:56 -07:00
|
|
|
indexstats.partition_number,
|
|
|
|
|
dbindexes.data_space_id
|
2018-12-31 12:47:41 -08:00
|
|
|
ORDER BY avg_fragmentation_in_percent DESC
|