測試表 ppp 僅 1 列資料,建立非叢集索引後空間從 16KB 增至 32KB(索引佔 24KB)。
主鍵鮮少作為查詢條件,叢集索引應給予範圍查詢、排序、聯結高頻欄位。
DBCC SHOWCONTIGDBCC SHOWCONTIG ('join_product_ty', 'PK_join_product_ty');
-- 關鍵指標:
-- Logical Scan Fragmentation (邏輯掃描碎片) < 10% 為佳
-- Extent Scan Fragmentation (區塊掃描碎片) < 5% 為佳
-- Avg Page Density (平均頁密度) 越接近 100% 越好
DECLARE @table_name sysname, @sql nvarchar(max);
DECLARE cur CURSOR FOR SELECT name FROM sysobjects WHERE xtype='u';
OPEN cur;
FETCH NEXT FROM cur INTO @table_name;
WHILE @@FETCH_STATUS = 0 BEGIN
SET @sql = 'DBCC DBREINDEX(' + QUOTENAME(@table_name) + ', '''', 0)';
EXEC (@sql);
PRINT @table_name + ' 重建完成';
FETCH NEXT FROM cur INTO @table_name;
END
CLOSE cur; DEALLOCATE cur;
DBCC CHECKDB;
配合維護計畫排程執行,維持索引健康。