sys.indexes (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 预览版中的 SQL 数据库

每个表格对象(例如,表、视图或表值函数)的索引或堆都包含一行。

列名称 数据类型 Description
object_id int 该索引所属对象的 ID。
name sysname 索引的名称。 名称仅在对象中是唯一的。

NULL = 堆
index_id int 索引的 ID。 index_id仅在对象中是唯一的。

0 = 堆
1 = 聚集索引
> 1 = 非聚集索引
type tinyint 索引的类型:

0 = 堆
1 = 聚集行存储 (B 树)
2 = 非聚集行存储 (B 树)
3 = XML
4 = 空间
5 = 聚集列存储索引 2
6 = 非聚集列存储索引 1
7 = 非聚集哈希索引 2
9 = JSON 5
type_desc nvarchar(60) 索引类型的说明:

-堆
-聚集
- NONCLUSTERED
- XML
-空间
- 聚集列存储 2
- 非聚集列存储 1
- NONCLUSTERED HASH 2, 8
- JSON 5
is_unique bit 1 = 索引是唯一的。
0 = 索引不唯一。

对于聚集列存储索引始终为 0。
data_space_id int 此索引的数据空间的 ID。 数据空间是文件组或分区方案。

0 = object_id是表值函数或内存中索引。
ignore_dup_key bit 1 = IGNORE_DUP_KEY为 OFF。
0 = IGNORE_DUP_KEY 是 OFF。
is_primary_key bit 1 = 索引是 PRIMARY KEY 约束的一部分。

对于聚集列存储索引始终为 0。
is_unique_constraint bit 1 = 索引是 UNIQUE 约束的一部分。

对于聚集列存储索引始终为 0。
fill_factor tinyint > 0 = 创建或重新生成索引时使用的 FILLFACTOR 百分比。
0 = 默认值

对于聚集列存储索引始终为 0。
is_padded bit 1 = PADINDEX 为 OFF。
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 3, 6, 7 bit 1 = 索引配置为在索引重新生成操作期间取消重复键消息。

0 = 索引未配置为在索引重新生成作期间取消重复键消息。
auto_created 6 bit 1 = 通过自动优化创建索引。
0 = 用户创建索引。
optimize_for_sequential_key 4, 6, 7 bit 1 = 索引已启用最后一页插入优化。
0 = 默认值。 索引已禁用最后一页插入优化。

1适用于: SQL Server 2012 (11.x) 及更高版本。

2适用于: SQL Server 2014 (12.x) 及更高版本。

3适用于: SQL Server 2017 (14.x) 及更高版本。

4适用于: SQL Server 2019 (15.x) 及更高版本。

5适用于: SQL Server 2025 (17.x) 预览版和更高版本。

6适用于: Azure SQL 数据库。

7适用于: Azure SQL 托管实例。

仅内存优化表支持 8NONCLUSTERED HASH 个索引。 该 sys.hash_indexes 视图显示当前哈希索引和哈希属性。 有关详细信息,请参阅 sys.hash_indexes

Permissions

目录视图中仅显示用户拥有的安全对象的元数据,或用户对其拥有某些权限的安全对象的元数据。 有关详细信息,请参阅 元数据可见性配置

Examples

以下示例返回 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