SQL Server提供的创建索引选项可以加快索引的创建并可以增强索引随时间改变的性能。
6.2.1 使用FILLFACTOR选项
可以使用FILLFACTOR选项来优化表中INSERT语句和UPDATE语句的性能,这些表包含了簇索引和非簇索引。
在索引页充满时,SQL Server必须花费时间来拆分页以使有空间可以容纳新的行。使用FILLFACTOR选项可以在叶级索引页上分配空间百分比以减少页的分离。
注意:FILLFACTOR选项仅在索引被创建和重建时使用。SQL Server并不主动维护索引页上分配空间的比例。
在表中指定的FILLFACTOR的值与数据被修改(INSERT语句和UPDATE语句))的频率和组织环境有关。在使用FILLFACTOR选项应该注意:
? 为在线处理过程(OLTP)环境使用较低的FILLFACTOR。
? 为SQL Server分析服务环境使用较高的FILLFACTOR。
下表显示了FILLFACTOR选项的设置和这些FILLFACTOR所使用的典型环境。
在使用FILLFACTOR选项时,考虑以下因素和准则:
? FILLFACTOR的值从1%到100%。
? 默认的FILLFACTOR值为0。该值将页级索引页填充为100%,并且在非页级索引页上为最大的索引条目留下了空间。不能明确指定FILLFACTOR:0。
? 通过使用sp_configure系统存储过程,可以在服务器级别改变默认的FILLFACTOR值。
? Sysindexes系统表存储最后使用的FILLFACTOR值,并带有其他索引的信息。
? FILLFACTOR值以百分比指定。该百分比决定了叶级页如何被填充。例如,FILLFACTOR为65%将叶级页填满65%,为新行保留35%的自由空间,行的大小会影响行如何填充或以指定的FILLFACTOR比例来填充。
? 在将插入行的表上使用FILLFACTOR选项,或在簇索引关键字经常被修改时使用该选项。
6.2.2 使用PAD_INDEX选项
PAD_INDEX选项指定填充非叶级索引页的比例。只有在指定FILLFACTOR选项的同时才能使用PAD_INDEX选项。因为PAD_INDEX比例值由FILLFACTOR选项指定的比例值决定。
下表显示了在使用PAD_INDEX选项时,FILLFACTOR选项设置的影响和PAD_INDEX值使用的典型环境。
FILLFACTOR百分比叶级页 非叶级页 关键字上的操作 典型商业环境
1-99 以指定比例填充 以指定比例填充 中等程度或较大修改 OLTP
在使用PAD_INDEX选项时,考虑以下因素:
? SQL Server运用FILLFACTOR选项指定叶级和非叶级页的比例。
? 默认情况下,SQL Server通常保留足够的空间,使非叶级页至少能容纳最大索引尺寸的行,而不管FILLFACTOR值有多大。
? PAD_INDEX使用FILLFACTOR值。
下面的例子在Orders ID列上创建OrderlD_ind索引。通过指定带有FILLFACTOR选项的PAD_INDEX选项,SQL Server创建70%满的叶级和非叶级页。但是,如果不使用PAD_INDEX选项,叶级页为70%满,而非叶级页几乎为全满。
USE Northwind
CREATE INDEX OrderlD_ind
ON Orders (OrderID)
WITH PAD_INDEX, FILLFACTOR = 70