SQL Server誤區30日談 第29天 有關堆碎片的誤區建站
導讀:1建站知識對堆建聚集索引再DROP在我看來是除了收縮數據庫之外最2的事了網站建設哪家好公司網站建設。
誤區 #29:可以通過對堆建聚集索引再DROP后進行堆上的碎片整理Nooooooooooooo!!!
對堆建聚集索引再DROP在我看來是除了收縮數據庫之外最2的事了。
如果你通過sys.dm_db_index_physical_stats(或是老版本的DBCC SHOWCONTIG)看到堆上有碎片,絕對不要通過建立聚集索引再刪除聚集索引來整理堆碎片。好的做法應該是建立聚集索引之后不再刪除,已經有非常多的資料闡述如何選擇一個理想的聚集索引鍵--窄,很少變動,唯一,自增。Kimberly有一篇文章對此做了一個總結:Ever-increasing clustering key - the Clustered Index Debate..........again!(注意,是基于SQL Server 2005版本),對此我也有一個例子:An example of a nasty cluster key。
你也可以在SQL Server 2008中通過ALTER TABLE ... REBUILD來清除堆碎片,但這個做法和建立聚集索引后再刪除同樣邪惡。
如果你想問為什么我對此甚有成見?好吧,那我解釋一下:非聚集索引中每一行都會指向一個RID或是聚集索引鍵的鏈接(詳情請看:What Happens if I Drop a Clustered Index?),這個鏈接會以下面兩種方式之一出現:
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章SQL Server誤區30日談 第29天 有關堆碎片的誤區建站主要講述誤區,碎片,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5945.html