1. 程式人生 > >【譯】索引進階(十二):SQL SERVER中的索引碎片【下篇】

【譯】索引進階(十二):SQL SERVER中的索引碎片【下篇】

div 外部 tor color 掃描 sql pan 討論 介紹

為了討論碎片產生的原因,以及避免和移除索引碎片的技術,我們必須從本進階系列後續將介紹的兩個章節借用一些知識點:創建/更新索引的知識,以及向一個索引表插入數據行的相關知識。

當我們講解這些信息的時候,記住本節背景部分提到的內容,僅當你的應用是進行索引掃描時,碎片是不被期望的(不管是索引的完全掃描還是部分掃描)。當你的應用程序僅僅返回一個索引鍵值的少量數目的條目時,碎片其實並不是個問題。如同列表3所示的5行數據的查詢。

SELECT *
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = 56080;
GO

列表3:一個高選擇性的查詢

當你在一個已經填充了數據行的表上創建或者重建索引的時候,會發生磁盤空間的重分配,導致了一幾乎不包含外部碎片的索引。內部碎片的數值取決於你為 FILLFACTOR選項指定的值,它決定了頁的覆蓋率。在後續的數據更新中,SQL SERVER不會做任何努力來包含這種頁覆蓋率,隨著數據行被插入表,結果條目會被插入索引頁中,這些頁會變得更加飽和。

【譯】索引進階(十二):SQL SERVER中的索引碎片【下篇】