以下文章解釋了堆表和聚集表之間的主要區別。
在使用表時 SQL Server用戶經常面臨使用聚集表還是堆表的困境。 沒有聚集索引的表稱為堆表,有聚集索引的表稱為聚集表。 聚集索引基本上重新排序了記錄在表中物理存儲的方式。 數據頁包含在聚集索引的葉節點中。

本文更詳細地討論了這兩種表類型。
集群表和堆表
聚集表為用戶提供了比堆表更多的好處,因為它們幫助用戶使用索引比堆表更快地查找行,並通過重建聚集索引來物理存儲數據/記錄。
如果對數據中的表進行更多 INSERT、DELETE 和 UPDATE 活動,您的物理數據可能會變得碎片化。 眾所周知,碎片數據會增加浪費和不需要的空間,因為如果您運行查詢,它必須讀取更多頁面,因為現在有更多部分完整的頁面。 讓我們找出解決數據碎片問題的方法。
堆和聚集表之間的區別
可以通過確定表中是否需要聚集索引來解決碎片問題。 畢竟,控製表物理存儲的是聚集索引或堆索引。 數據庫中的任何表只能有一種類型的索引。 為了做出選擇,我們必須了解兩者之間的基本區別,如下所示。
- 在堆中,存儲數據沒有順序,但在聚簇中,數據存儲的順序取決於聚簇索引鍵。
- 數據頁在堆中不鏈接,而在簇表中,它們是鏈接的並且順序訪問速度更快。
- 對於 sys.indexes 目錄視圖,堆有 0 個 index_id 值,而集群有 1 個 index_id 值
- 由於存在聚集索引鍵,聚集索引比堆表檢索數據更快
碎片
基於簇表和堆表之間的差異,可以解決碎片問題。 由於使用 INSERT、DELETE 和 UPDATE 活動,會出現碎片。 但是,如果您有堆表並且只有 INSERT 活動,則不會發生碎片。 如果您使用順序索引鍵(標識值)並且只有插入,那麼您的聚集索引將不會產生碎片。 但是,如果您使用大量插入或刪除,那麼表將變得碎片化。
因此建議使用聚集索引,因為它依賴於索引鍵並且消耗更少的空間。 新記錄可以寫入可用空間中已有的頁面。
要確定使用堆還是聚簇表,您還可以嘗試運行 DBCC SHOWCONTIG 或新的 DMV,因為這兩個命令都可以讓您深入了解表中的碎片問題。 在聚集表中,可以通過重新組織或重建聚集索引來解決碎片問題。
投資於 SQL Server 修復 對於使用MS的公司來說,該工具是必須的 SQL Server 其生產服務器上的數據庫。 事實上,它可以在數據庫崩潰時成為救星。
作者簡介:
Victor Simon是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復MDB 和sql恢復軟件產品。 欲了解更多信息,請訪問 https://www.datanumen.com/