Sql-Server
重新索引會使用空白空間還是只是增加表?
我有一個 170 GB 的表,它有 98 GB 的可用/空閒空間。空閒空間是由大量刪除創建的。如果我執行 DBCC REINDEX 或 ALTER INDEX REBUILD,索引會首先使用該空閒空間,還是會忽略空閒空間而表只會增長?
INDEX REBUILD 的全部意義在於使數據處理更加高效。這意味著在可能的情況下,它會重新組織數據以減少用於該索引(無論是 PK、唯一還是非唯一索引)的頁數(根據填充因子和其他限制),並對數據在使用的頁面和範圍內更有效。
因此,它將重用現有頁面作為首選。這應該會減少使用的儲存空間。當然,如果修改了索引,這可能會擴大所需的儲存量,具體取決於修改。
使用 tempdb 重建索引可以提高性能,但不太可能顯著影響所需的儲存。
在這種情況下,您絕對應該重建索引。
請注意,這不會減小 .mdf 和 .ndf 文件的物理大小。它將釋放可用作數據庫中表擴展大小的空間。
我對此進行了測試,並在我的系統上首先使用了可用空間。您可以選擇使用 tempdb 重建索引。