sys.indexes (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

包含表格式物件的每個索引或堆積的數據列,例如數據表、檢視表或數據表值函式。

資料行名稱 資料類型 描述
object_id int 這個索引所屬之對象的標識碼。
name sysname 索引的名稱。 name 只有在物件內是唯一的。

NULL = 堆積
index_id int 索引的識別碼。 index_id 只有在物件內是唯一的。

0 = 堆積

1 = 叢集索引

> 1 = 非叢集索引
type tinyint 索引的類型:

0 = 堆積

1 = 叢集資料列存放區 (B 型樹狀結構)

2 = 非叢集資料列存放區 (B 型樹狀結構)

3 = XML

4 = 空間

5 = 叢集資料行存放區索引。 適用於:SQL Server 2014 (12.x) 和更新版本。

6 = 非叢集資料行存放區索引。 適用於:SQL Server 2012 (11.x) 和更新版本。

7 = 非叢集哈希索引。 適用於:SQL Server 2014 (12.x) 和更新版本。
type_desc nvarchar(60) 索引類型的描述:

HEAP

CLUSTERED

NONCLUSTERED

XML

空間

CLUSTERED COLUMNSTORE - 適用於:SQL Server 2014 (12.x) 和更新版本。

NONCLUSTERED COLUMNSTORE - 適用於:SQL Server 2012 (11.x) 和更新版本。

NONCLUSTERED HASH :只有記憶體優化數據表才支援 NONCLUSTERED HASH 索引。 檢視 sys.hash_indexes 會顯示目前的哈希索引和哈希屬性。 如需詳細資訊,請參閱 sys.hash_indexes (Transact-SQL)適用於:SQL Server 2014 (12.x) 和更新版本。
is_unique bit 1 = 索引是唯一的。

0 = 索引不是唯一的。

叢集數據行存放區索引一律為 0。
data_space_id int 這個索引的數據空間標識碼。 數據空間是檔案群組或分割區配置。

0 = object_id 是資料表值函式或記憶體內部索引。
ignore_dup_key bit 1 = IGNORE_DUP_KEY為 ON。

0 = IGNORE_DUP_KEY為 OFF。
is_primary_key bit 1 = 索引是 PRIMARY KEY 條件約束的一部分。

叢集數據行存放區索引一律為 0。
is_unique_constraint bit 1 = Index 是 UNIQUE 條件約束的一部分。

叢集數據行存放區索引一律為 0。
fill_factor tinyint > 0 = 建立或重建索引時所使用的 FILLFACTOR 百分比。

0 = 預設值

叢集數據行存放區索引一律為 0。
is_padded bit 1 = PADINDEX 為 ON。

0 = PADINDEX 為 OFF。

叢集數據行存放區索引一律為 0。
is_disabled bit 1 = 索引已停用。

0 = 索引未停用。
is_hypothetical bit 1 = 索引是假設的,不能直接當做數據存取路徑使用。 假設索引會保存數據行層級統計數據。

0 = 索引不是假設的。
allow_row_locks bit 1 = 索引允許資料列鎖定。

0 = 索引不允許資料列鎖定。

叢集數據行存放區索引一律為 0。
allow_page_locks bit 1 = 索引允許頁面鎖定。

0 = 索引不允許頁面鎖定。

叢集數據行存放區索引一律為 0。
has_filter bit 1 = 索引具有篩選條件,且只包含滿足篩選定義的數據列。

0 = 索引沒有篩選條件。
filter_definition nvarchar(max) 篩選索引中包含的數據列子集表達式。

堆積、未篩選索引或數據表許可權不足的NULL。
compression_delay int > 0 = 以分鐘為單位指定的數據行存放區索引壓縮延遲。

NULL = 資料行存放區索引資料列群組壓縮延遲會自動管理。
suppress_dup_key_messages bit 1 = 索引設定為在索引重建作業期間隱藏重複的索引鍵訊息。

0 = 索引未設定為在索引重建作業期間隱藏重複的索引鍵訊息。

適用於:SQL Server(從 SQL Server 2017 (14.x)開始)、Azure SQL 資料庫 和 Azure SQL 受控執行個體
auto_created bit 1 = 索引是由自動調整所建立。

0 = 使用者已建立索引。

適用於:Azure SQL Database
optimize_for_sequential_key bit 1 = 索引已啟用最後一頁插入優化。

0 = 預設值。 索引已停用最後一頁插入優化。

適用於:SQL Server(從 SQL Server 2019 (15.x)開始)、Azure SQL 資料庫 和 Azure SQL 受控執行個體

權限

目錄檢視中元數據的可見度僅限於用戶擁有的安全性實體,或用戶獲授與某些許可權的安全性實體。 如需相關資訊,請參閱 Metadata Visibility Configuration

範例

下列範例會傳回 AdventureWorks2022 資料庫中數據表 Production.Product 的所有索引。

SELECT i.name AS index_name  
    ,i.type_desc  
    ,is_unique  
    ,ds.type_desc AS filegroup_or_partition_scheme  
    ,ds.name AS filegroup_or_partition_scheme_name  
    ,ignore_dup_key  
    ,is_primary_key  
    ,is_unique_constraint  
    ,fill_factor  
    ,is_padded  
    ,is_disabled  
    ,allow_row_locks  
    ,allow_page_locks  
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('Production.Product');  
GO  

下一步

物件目錄檢視 (Transact-SQL)
目錄檢視 (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.xml_indexes (Transact-SQL)
sys.objects (Transact-SQL)
sys.key_constraints (Transact-SQL)
sys.filegroups (Transact-SQL)
sys.partition_schemes (Transact-SQL)
查詢 SQL Server 系統目錄常見問題
In-Memory OLTP (記憶體中最佳化)