Sql-server – How does FILLFACTOR reduce page splits

indexsql server

The default FILLFACTOR is 100 and I have been told at times to reduce it to 80 or lower so that page splits will be reduced due to the empty space on each page.

I don't understand this–if a new index is created on a table with a default FILLFACTOR of 80, 20% space of each page is left empty. So assume a row needs to use 10% of a page, so when it's full it can hold 10 records. With a FILLFACTOR of 80, now it can only hold 8 records. So when you add the 9th record, will there be a page split? With 100% FILLFACTOR, a page split will only happen on the 11th record, so it seems that a lower fill factor makes it worse.

Best Answer

Fill factor does not impact “regular” inserts/updates. It tells the engine to leave some space while building/rebuilding the index. This is not “reserved” and will fill up with DML activity. It doesn’t protect you against page splits, it simply postpones them a bit but it depends on the key and insert patterns. For example, for an identity or other ever increasing types, page splits can’t occur due to inserts, and it does cause a waste of memory space so be careful. I wouldn’t modify it, unless I had s compelling reason to. HTH