USE tempdb
GO
DROP TABLE IF EXISTS frag
CREATE TABLE frag(c1 int identity, c2 varchar(80))
GO
--Clustered index on c1 column
CREATE CLUSTERED INDEX c1 ON frag(c1)
--Insert 100,000 rows
INSERT INTO frag (c2)
SELECT TOP 100000 'Hello' FROM sys.columns AS a CROSS JOIN sys.columns AS b CROSS JOIN sys.columns AS c
GO
--Generate fragmentation, make half of the rows larger
UPDATE frag SET c2 = 'Hello there, everybody!' WHERE c1 % 2 = 1
GO
--Verify page fullness: 68%
SELECT page_count, avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('frag'), NULL, NULL, 'DETAILED')
WHERE index_level = 0
--Reorg
ALTER INDEX ALL ON frag REORGANIZE
--Check page fullness: 99%
SELECT page_count, avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('frag'), NULL, NULL, 'DETAILED')
WHERE index_level = 0
你试过了吗?这些事情很容易尝试,你不必相信别人的话。
显示答案是: 是的。Reorg 会压缩页面。
参见下面的代码,其中叶级别的聚集索引的充满度约为 68%,重组后达到 99%。
关于文档中的以下声明:
以上指的是一般的修改语句。(例如,在执行插入时维护填充因子是荒谬的。)为什么例外列表中没有提到重组?显然是一个疏忽。如果您愿意,欢迎您提供文档反馈。
复制: