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, root 是指向根页的指针。

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 时,表已分区。

如果发生行溢出,则不会得出准确的结果。
已使用 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 图像 统计信息二进制大型对象 (BLOB)。

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

备注

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

如果表或索引包含ROW_OVERFLOW分配单元中的数据,则 dpages保留使用的 列将不会返回准确的结果。 此外,将单独跟踪每个索引的页计数,并且不对基表的页计数进行聚合。 若要查看页计数,请使用 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)