我想对 sql server 中的表进行碎片整理,我使用这段代码来了解碎片索引:
sELECT dbschemas.[name] as 'Schema',
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.avg_fragmentation_in_percent as Fragmentation,
indexstats.page_count
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]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID() ORDER BY indexstats.avg_fragmentation_in_percent
desc
在我得到我使用的结果之后
DBCC INDEXDEFRAG([MAIL SYSTEMS],EmpMail)
对索引进行碎片整理,然后重用第一个代码来显示结果,它在碎片整理之前显示相同并且没有删除任何页面?那有什么问题,我该如何修复索引?