設定索引選項
適用於:Microsoft Fabric 中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 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
在資料表設計工具中修改索引的屬性
- 在 [物件總管] 中,按一下加號展開資料庫,此資料庫包含您要修改索引屬性的資料表。
- 按一下加號展開 [資料表] 資料夾。
- 以滑鼠右鍵按一下要修改索引屬性的資料表,然後選取 [設計]。
- 在 [資料表設計工具] 功能表上,按一下 [索引/索引鍵]。
- 選取您要修改的索引。 其屬性會在主要方格中顯示。
- 變更任何和所有屬性的設定,以自訂索引。
- 按一下 [關閉] 。
- 在 [檔案] 功能表上,選取 [儲存 table_name]。
在物件總管中修改索引的屬性
- 在 [物件總管] 中,按一下加號展開資料庫,此資料庫包含您要修改索引屬性的資料表。
- 按一下加號展開 [資料表] 資料夾。
- 按一下加號展開要修改索引屬性的資料表。
- 按一下加號展開 [索引] 資料夾。
- 以滑鼠右鍵按一下要修改其屬性的索引,然後選取 [屬性]。
- 在 [選取頁面] 底下,選取 [選項] 。
- 變更任何和所有屬性的設定,以自訂索引。
- 若要新增、移除或變更索引數據行的位置,請從 [索引屬性 - 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)。