它是否会取决于碎片的性质。
Reorganize 不会分配新页面,因此无法移除因非连续范围而发生的碎片。它通过交换页面来工作。即它确定属于叶级的第一个物理页面和叶级的第一个逻辑页面,如果它们不同,则交换内容。
如果我尝试以下操作,我发现重组会将碎片从 99.9% 降低到 0.9%
CREATE TABLE T( [ID] [int] IDENTITY NOT NULL,
[Filler] [char](8000) NULL,
PRIMARY KEY CLUSTERED ([ID] DESC))
GO
INSERT INTO T DEFAULT VALUES
GO 1000
SELECT object_name(object_id) AS name,
page_count,
avg_fragmentation_in_percent,
fragment_count,
avg_fragment_size_in_pages
FROM
sys.dm_db_index_physical_stats(db_id(), object_id('T'), 1, NULL, 'DETAILED')
WHERE index_level = 0
SET STATISTICS IO ON;
ALTER INDEX ALL ON T
REORGANIZE ;
SELECT object_name(object_id) AS name,
page_count,
avg_fragmentation_in_percent,
fragment_count,
avg_fragment_size_in_pages
FROM
sys.dm_db_index_physical_stats(db_id(), object_id('T'), 1, NULL, 'DETAILED')
WHERE index_level = 0