sql server 設定index FillFactor(填滿因素)
SQL SERVER儲存資料的單位為Page(頁面),在建立Index時,SQL SERVER預設會在Page填滿資料(FillFactor為0或100),此時如果新增資料時,因為Page已滿,Index所以必須使用另一個Page儲存資料,在一連串的異動資料後,會導致資料散佈在各Page上,當SQL SEVER要讀取Index時,因為資料散佈在Page而使效能低落。為了避免因為異動資料而引起的效能低落,在建立Index時可以指定Page保留一定的空間。 當Page有保留一定空間(假設FillFactor為80)時,新增的會插入現在的Page的預留空間,如此資料就不會分散。 如果FillFactor設定太小(如30),會造成建立Index時,每一個Page都只用30%的空間,這樣同樣會有資料散佈的問題以及會浪費儲存空間。 設定FillFactor可以搭配PAD_INDEX,該選項的為FillFactor的設定也套用在Index的中間(intermediate-level)。 使用 fill factor 選項,主要指定 Microsoft SQL Server 在使用現有的資料建立新索引時,應該在每一頁填滿多少空間。填滿因數會影響效能,因為當頁面填滿之後,SQL Server 就必須花費時間進行頁面的分割。 PS: A、填滿因數的預設值為 0;有效值介於 0 到 100 之間。當 FILL FACTOR 設定為 0 或 100 時,分葉層級會完全填滿。 B、填滿因數只會用於建立或重建索引時。所有分頁都不會保持在特定的填滿程度。 --檢視資料庫中所有的index SELECT DB_NAME() DBName, OBJECT_NAME([object_id]) AS TableName, name AS IndexName, is_primary_key, is_unique, type_desc, fill_factor, has_filter, filter_definition FROM SYS.INDEXES WHERE OBJECT_NAME([object_id]) IN (SELECT Table_Name FROM INFORMATION_SCHEMA.CONSTRAINT_T