设置索引选项
当设计、创建或修改索引时,要注意一些索引选项。这些选项可以在第一次创建索引或重新生成索引时指定。此外,还可以使用 ALTER INDEX 语句的 SET 子句随时设置一些索引选项。
索引选项
说明
元数据中存储的设置
相关主题
PAD_INDEX
设置创建索引期间中间级别页中可用空间的百分比。
是
FILLFACTOR
设置创建索引期间每个索引页的页级别中可用空间的百分比。
是
SORT_IN_TEMPDB
确定对创建索引期间生成的中间排序结果进行排序的位置。
如果为 ON,则排序结果存储在 tempdb 中。如果为 OFF,则排序结果存储在存储结果索引的文件组或分区方案中。
注意:
如果不需要排序操作或可以在内存中执行排序,则忽略 SORT_IN_TEMPDB。
否
IGNORE_DUP_KEY
指定对唯一聚集索引或唯一非聚集索引的多行 INSERT 事务中重复键值的错误响应。
是
STATISTICS_NORECOMPUTE
指定是否应自动重新计算过期的索引统计信息。
是
DROP_EXISTING
指示应删除和重新创建现有索引。
否
ONLINE
确定是否允许并发用户在索引操作期间访问基础表或聚集索引数据以及任何关联非聚集索引。
注意:
联机索引操作只适用于 Microsoft SQL Server 2005 Enterprise Edition。
否
ALLOW_ROW_LOCKS
确定访问索引数据时是否使用行锁。
是
ALLOW_PAGE_LOCKS
确定访问索引数据时是否使用页锁。
是
MAXDOP
设置查询处理器执行单个索引语句可以使用的最大处理器数。根据当前系统的工作负荷,可以使用较少的处理器。
注意:
并行索引操作只适用于 SQL Server 2005 Enterprise Edition。
否
设置索引上的选项
设置选项但不重新生成
使用 ALTER INDEX 语句中的 SET 子句,可以设置下列索引选项而不重新生成索引:
- ALLOW_PAGE_LOCKS
- ALLOW_ROW_LOCKS
- IGNORE_DUP_KEY
- STATISTICS_NORECOMPUTE
上面这些选项立即应用于索引。只有在创建或重新生成索引时,才可以指定其他索引选项(如 FILLFACTOR 和 ONLINE)。
查看索引选项设置
并不是所有索引选项值都存储在元数据中。存储在元数据中的那些值可以在相应的目录视图中查看。若要检查现有索引的当前选项设置,请使用 sys.indexes 目录视图。若要检查 STATISTICS_NORECOMPUTE 的当前值,请使用 sys.stats 目录视图。有关详细信息,请参阅查看索引信息。
示例
下面的示例对 Production.Product
表中的 AK_Product_ProductNumber
索引设置了 ALLOW_ROW_LOCKS
和 IGNORE_DUP_KEY
选项。
USE AdventureWorks;
GO
--Verify the current values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY option ON.
ALTER INDEX AK_Product_ProductNumber
ON Production.Product
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
请参阅
概念
其他资源
sys.indexes (Transact-SQL)
sys.stats (Transact-SQL)