分享方式:


設定索引選項

適用於:SQL Server、Azure 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)