设置索引选项

当设计、创建或修改索引时,要注意一些索引选项。这些选项可以在第一次创建索引或重新生成索引时指定。此外,还可以使用 ALTER INDEX 语句的 SET 子句随时设置一些索引选项。

索引选项

说明

元数据中存储的设置

相关主题

PAD_INDEX

设置创建索引期间中间级别页中可用空间的百分比。

填充因子

FILLFACTOR

设置创建索引期间每个索引页的页级别中可用空间的百分比。

填充因子

SORT_IN_TEMPDB

确定对创建索引期间生成的中间排序结果进行排序的位置。

如果为 ON,则排序结果存储在 tempdb 中。如果为 OFF,则排序结果存储在存储结果索引的文件组或分区方案中。

ms188677.note(zh-cn,SQL.90).gif注意:

如果不需要排序操作或可以在内存中执行排序,则忽略 SORT_IN_TEMPDB。

tempdb 和索引创建

IGNORE_DUP_KEY

指定对唯一聚集索引或唯一非聚集索引的多行 INSERT 事务中重复键值的错误响应。

CREATE INDEX

STATISTICS_NORECOMPUTE

指定是否应自动重新计算过期的索引统计信息。

索引统计信息

DROP_EXISTING

指示应删除和重新创建现有索引。

重新组织和重新生成索引

ONLINE

确定是否允许并发用户在索引操作期间访问基础表或聚集索引数据以及任何关联非聚集索引。

ms188677.note(zh-cn,SQL.90).gif注意:

联机索引操作只适用于 Microsoft SQL Server 2005 Enterprise Edition。

联机执行索引操作

ALLOW_ROW_LOCKS

确定访问索引数据时是否使用行锁。

CREATE INDEX

ALLOW_PAGE_LOCKS

确定访问索引数据时是否使用页锁。

CREATE INDEX

MAXDOP

设置查询处理器执行单个索引语句可以使用的最大处理器数。根据当前系统的工作负荷,可以使用较少的处理器。

ms188677.note(zh-cn,SQL.90).gif注意:

并行索引操作只适用于 SQL Server 2005 Enterprise Edition。

配置并行索引操作

设置索引上的选项

ALTER INDEX (Transact-SQL)

设置选项但不重新生成

使用 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_LOCKSIGNORE_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)

帮助和信息

获取 SQL Server 2005 帮助