设置索引选项

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

本主题说明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中修改索引的属性。

本文内容

开始之前

限制和局限

  • 使用 ALTER INDEX 语句中的 SET 子句,将以下选项立即应用到索引:ALLOW_PAGE_LOCKS、ALLOW_ROW_LOCKS、OPTIMIZE_FOR_SEQUENTIAL_KEY、IGNORE_DUP_KEY 和 STATISTICS_NORECOMPUTE。
  • 使用 ALTER INDEX REBUILD 或 CREATE INDEX WITH DROP_EXISTING 重新生成索引时,可以设置以下选项:PAD_INDEX、FILLFACTOR、SORT_IN_TEMPDB、IGNORE_DUP_KEY、STATISTICS_NORECOMPUTE、ONLINE、ALLOW_ROW_LOCKS、ALLOW_PAGE_LOCKS、MAXDOP 和 DROP_EXISTING(仅 CREATE INDEX)。

安全性

权限

要求对表或视图具有 ALTER 权限。

使用 SQL Server Management Studio

在表设计器中修改索引的属性

  1. 在对象资源管理器中,单击加号以便展开包含您要修改索引属性的表的数据库。
  2. 单击加号以便展开 “表” 文件夹。
  3. 右键单击你要修改索引属性的表,然后选择“设计”
  4. 在“表设计器”菜单上,单击“索引/键”
  5. 选择要修改的索引。 其属性将显示在主网格中。
  6. 更改任意属性的设置以自定义索引。
  7. 单击 “关闭”
  8. 在“文件”菜单上,选择“保存”以保存 table_name

在对象资源管理器中修改索引的属性

  1. 在对象资源管理器中,单击加号以便展开包含您要修改索引属性的表的数据库。
  2. 单击加号以便展开 “表” 文件夹。
  3. 单击加号以展开您要修改索引属性的表。
  4. 单击加号以便展开 “索引” 文件夹。
  5. 右键单击要修改其属性的索引,然后选择“属性”
  6. “选择页”下,选择 “选项”
  7. 更改任意属性的设置以自定义索引。
  8. 若要添加、删除或更改索引列的位置,请从“索引属性 - index_name”对话框中选择“常规”页。 有关详细信息,请参阅 Index Properties F1 Help

“使用 Transact-SQL”

查看表中所有索引的属性

下面的示例展示了 AdventureWorks 数据库中表的所有索引的属性。

SELECT i.name AS index_name
   , i.type_desc
   , i.is_unique
   , ds.type_desc AS filegroup_or_partition_scheme
   , ds.name AS filegroup_or_partition_scheme_name
   , i.ignore_dup_key
   , i.is_primary_key
   , i.is_unique_constraint
   , i.fill_factor
   , i.is_padded
   , i.is_disabled
   , i.allow_row_locks
   , i.allow_page_locks
   , i.has_filter
   , i.filter_definition
FROM sys.indexes AS i
   INNER JOIN sys.data_spaces AS ds
      ON i.data_space_id = ds.data_space_id
   WHERE is_hypothetical = 0 AND i.index_id <> 0
       AND i.object_id = OBJECT_ID('HumanResources.Employee')
;

设置索引的属性

下面的示例设置 AdventureWorks 数据库中索引的属性。

ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON
    Sales.SalesOrderHeader
SET (
    STATISTICS_NORECOMPUTE = ON,
    IGNORE_DUP_KEY = ON,
    ALLOW_PAGE_LOCKS = ON
    )
;
ALTER INDEX ALL ON Production.Product
REBUILD WITH 
   (
       FILLFACTOR = 80
       , SORT_IN_TEMPDB = ON
       , STATISTICS_NORECOMPUTE = ON
   )
;

有关详细信息,请参阅 ALTER INDEX (Transact-SQL)