sys.sysindexes (Transact-SQL)

适用于SQL Server

当前数据库中的每个索引和表各对应一行。 此视图不支持 XML 索引。 此视图中不支持已分区表和索引;请改用 sys.indexes 目录视图。

重要

将此 SQL Server 2000 系统表作为一个视图包含进来是为了保持向后兼容性。 建议您改用最新的 SQL Server 系统视图。 若要查找一个或多个等效系统视图,请参阅将系统表映射到系统视图 (Transact-SQL)。 后续版本的 Microsoft SQL Server 将删除该功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

列名称 数据类型 说明
id int 索引所属表的 ID。
status int 系统状态信息。

标识为仅供参考。 不支持。 不保证以后的兼容性。
first binary(6) 指向第一页或根页的指针。

indid = 0 时未使用。

NULL = 在 indid> 1 时对索引进行分区。

NULL = indid 为 0 或 1 时对表进行分区。
indid smallint 索引 ID:

0 = 堆

1 = 聚集索引

>1 = 非聚集索引
root binary(6) 对于 indid>= 1, 是指向根页的指针。

indid = 0 时未使用。

NULL = 在 indid> 1 时对索引进行分区。

NULL = indid 为 0 或 1 时对表进行分区。
minlen smallint 行的最小大小。
keycnt smallint 键数。
groupid smallint 在其上创建对象的文件组 ID。

NULL = 在 indid> 1 时对索引进行分区。

NULL = indid 为 0 或 1 时对表进行分区。
dpages int 对于 indid = 0 或 indid = 1,dpages 是使用的数据页计数。

对于 indid> 1,dpages 是使用的索引页计数。

0 = indid> 1 时对索引进行分区。

0 = indid 为 0 或 1 时对表进行分区。

如果发生行溢出,则不会得出准确的结果。
reserved int 对于 indid = 0 或 indid = 1, 保留 是为所有索引和表数据分配的页面计数。

对于 indid> 1, 保留 是为索引分配的页面计数。

0 = indid> 1 时对索引进行分区。

0 = indid 为 0 或 1 时对表进行分区。

如果发生行溢出,则不会得出准确的结果。
used int 对于 indid = 0 或 indid = 1, 使用的 是用于所有索引和表数据的总页数。

对于 indid> 1, 使用的 页计数用于索引。

0 = indid> 1 时对索引进行分区。

0 = indid 为 0 或 1 时对表进行分区。

如果发生行溢出,则不会得出准确的结果。
rowcnt bigint 基于 indid = 0 和 indid = 1 的数据级行计数。

0 = indid> 1 时对索引进行分区。

0 = indid 为 0 或 1 时对表进行分区。
rowmodctr int 对自上次更新表的统计信息后插入、删除或更新行的总数进行计数。

0 = indid> 1 时对索引进行分区。

0 = indid 为 0 或 1 时对表进行分区。

在 SQL Server 2005(9.x)及更高版本中, rowmodctr 与早期版本不完全兼容。 有关详细信息,请参阅“备注”。
reserved3 int 返回 0。

标识为仅供参考。 不支持。 不保证以后的兼容性。
reserved4 int 返回 0。

标识为仅供参考。 不支持。 不保证以后的兼容性。
xmaxlen smallint 行的最大大小
maxirow smallint 最大非叶索引行大小。

在 SQL Server 2005(9.x)及更高版本中, maxirow 与早期版本不完全兼容。
OrigFillFactor tinyint 创建索引时使用的初始填充因子值。 不保留该值;但如果需要重新创建索引但不记得当初使用的填充因子,则该值可能很有帮助。
StatVersion tinyint 返回 0。

标识为仅供参考。 不支持。 不保证以后的兼容性。
reserved2 int 返回 0。

标识为仅供参考。 不支持。 不保证以后的兼容性。
FirstIAM binary(6) NULL = 索引已分区。

标识为仅供参考。 不支持。 不保证以后的兼容性。
impid smallint 索引实现标志。

返回 0。

标识为仅供参考。 不支持。 不保证以后的兼容性。
lockflags smallint 用于约束经过考虑的索引锁粒度。 例如,对于本质上是只读的查找表,可以将其设置为仅进行表级锁定以最大限度地降低锁定成本。
pgmodctr int 返回 0。

标识为仅供参考。 不支持。 不保证以后的兼容性。
keys varbinary(816) 组成索引键的列 ID 列表。

返回 NULL。

若要显示索引键列,请使用 sys.sysindexkeys
name sysname 索引或统计信息的名称。 indid = 0 时返回 NULL。 修改应用程序以查找 NULL 堆名。
statblob image 统计信息二进制大型对象 (BLOB)。

返回 NULL。
maxlen int 标识为仅供参考。 不支持。 不保证以后的兼容性。
rows int 基于 indid = 0 和 indid = 1 的数据级行计数,而 indid >1 将重复该值。

注解

不得使用定义为保留的列。

如果表或索引包含ROW_OVERFLOW分配单元中的数据,则保留和使用的将不会返回准确的结果。 此外,将单独跟踪每个索引的页计数,并且不对基表的页计数进行聚合。 若要查看页计数,请使用 sys.allocation_unitssys.partitions 目录视图,或 sys.dm_db_partition_stats 动态管理视图。

在 SQL Server 2000 及更早版本中,数据库引擎维护行级修改计数器。 现在,此类计数器在列级维护。 因此, 将计算 rowmodctr 列并生成与早期版本中的结果类似的结果,但并不精确。

如果使用 rowmodctr 中的值来确定何时更新统计信息,请考虑以下解决方案:

  • 不执行任何操作。 新的 rowmodctr 值将经常帮助你确定何时更新统计信息,因为行为与早期版本的结果相当接近。

  • 使用 AUTO_UPDATE_STATISTICS。 有关详细信息, 请参阅统计信息

  • 使用时间限制确定更新统计信息的时间。 例如,每小时、每天或每周。

  • 使用应用程序级信息确定更新统计信息的时间。 例如,每次标识列的最大值更改超过 10,000 或每次执行批量插入操作时。

另请参阅

目录视图 (Transact-SQL)
将系统表映射到系统视图 (Transact-SQL)
sys.indexes (Transact-SQL)