Sql-Server
聚集索引壓縮與表壓縮——它們是一回事嗎?
如果我在表的聚集索引上設置壓縮(頁或行),這與在表上設置壓縮相同嗎?
SQL Server 提供了兩者的選項,這表明它們是不同的,但我的印像是聚集索引和表本質上是同一件事,我對聚集索引如何工作的心理模型告訴我壓縮聚集索引還必須壓縮表。
如果我在表的聚集索引上設置壓縮(頁或行),這與在表上設置壓縮相同嗎?
是的。
來自MSDN:
使用 REBUILD WITH 語法重建整個表,包括分區表中的所有分區。如果表有聚集索引,REBUILD 選項會重建聚集索引。
SQL Server 提供了兩者的選項,這表明它們是不同的
兩種語法都存在的原因是表不一定有聚集索引。換句話說,
ALTER INDEX ALL ON ... REBUILD
不會影響堆(儘管它會觸及所有非集群),因此另一條路由服務於該目的。此外,雖然文件沒有明確說明,但
ALTER TABLE ... REBUILD
語法並未啟用/禁用表上所有非聚集索引的壓縮。它只影響堆或聚集索引。最後,如果您通過 SSMS 進行測試,請注意在禁用壓縮時您可能會遇到錯誤- 編寫腳本以便查看實際情況。