sys.indexes (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric SQL 数据库
每个表格对象(例如,表、视图或表值函数)的索引或堆都包含一行。
列名称 | 数据类型 | 说明 |
---|---|---|
object_id | int | 该索引所属对象的 ID。 |
name | sysname | 索引的名称。 name 仅在对象中是唯一的。NULL = 堆 |
index_id | int | 索引的 ID。 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 SPATIAL 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 | 此索引的数据空间的 ID。 数据空间是文件组或分区方案。 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 = 索引是 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 数据库 |
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 系统目录常见问题
内存中 OLTP(内存中优化)