The fill factor tells the SQL Server that when writting the index data to the disk, only fill the pages on the disk to 50%. When the page is 50% full move on to the next page.
This is done so that when you add new records to the table (and to the index) if the new record should be physically placed within the middle of the index there is room in the page at the middle of the index for the data. If the page at the middle is full then the data is written to a new page.
I'll try to show an example here.
Say we have a table with a single column, and we create an index on that column. The column is called EmpNo (Employee Numbers) and we have a clustered index on the column. The column looks like this.
1
2
3
4
8
9
10
12
15
18
24
...
(Imaging that there is 8k worth of data here to fill the entire page). Now if we have a fill factor of 100% then the page is completly full. So if we enter EmpNo 6 into the table (as well as the index) if can not put the data in the correct page on the disk that it shold be in, so it does what is called a page split and the data is writtin to the next physical page on the disk. If we have a fill factor of say 75% then when the index is created the page is left 25% empty. So when we go to put 6 into the field there is room for in within the correct page on the disk and the data is written in the correct place.
Page splits are bad. They cause performance problems as the disk now has to find the data spread out accross the disk instead of in a nice neat row.
In BOL there is a very cryptic explination of PAD_INDEX
BOL said:
Specifies the space to leave open on each page (node) in the intermediate levels of the index. The PAD_INDEX option is useful only when FILLFACTOR is specified, because PAD_INDEX uses the percentage specified by FILLFACTOR. By default, SQL Server ensures that each index page has enough empty space to accommodate at least one row of the maximum size the index can have, given the set of keys on the intermediate pages. If the percentage specified for FILLFACTOR is not large enough to accommodate one row, SQL Server internally overrides the percentage to allow the minimum.
Frankly I'm not sure how to translate that into English.
Denny
MCSA (2003) / MCDBA (SQL 2000)
--Anything is possible. All it takes is a little research. (Me)
(Not quite so old any more.)