索引重建/重组
SQL Server维护命令
-- Rebuild (high fragmentation > 30%). ONLINE requires Enterprise:
ALTER INDEX IX_Customer_Email ON dbo.Customer
REBUILD WITH (ONLINE = ON, MAXDOP = 4, SORT_IN_TEMPDB = ON);
-- All indexes of a table:
ALTER INDEX ALL ON dbo.Customer REBUILD WITH (FILLFACTOR = 90);
-- Reorganize (moderate fragmentation 5-30%, always online, can be stopped):
ALTER INDEX IX_Customer_Email ON dbo.Customer REORGANIZE;作用
REBUILD 从头重新创建索引(彻底消除碎片,刷新统计信息);REORGANIZE 就地压缩叶级(轻量、不阻塞)。
适用场景
碎片率 5-30% 时用 REORGANIZE,超过 30% 时用 REBUILD。大表在维护窗口中进行。
注意
ONLINE = ON 仅在 Enterprise/Developer 中可用;Standard 中使用 OFF(表会被锁定)。REBUILD 会生成大量日志并需要空间。MAXDOP 和 SORT_IN_TEMPDB 影响资源使用。