sys.sysindexes (Transact-SQL)

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

重要说明重要提示

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

适用范围:SQL Server(SQL Server 2008 到当前版本)。

列名

数据类型

说明

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,reserved 是分配给所有索引和表数据的页计数。

如果 indid > 1,reserved 是分配给索引的页计数。

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

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

如果发生行溢出,则不会得出准确的结果。

used

int

如果 indid = 0 或 indid = 1,used 是用于所有索引和表数据的总页数。

如果 indid > 1,used 是用于索引的页计数。

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 及更高版本中,rowmodctr 与早期版本不完全兼容。 有关详细信息,请参阅“备注”。

reserved3

int

返回 0。

标识为仅供参考。不提供支持。不保证以后的兼容性。

reserved4

int

返回 0。

标识为仅供参考。不提供支持。不保证以后的兼容性。

xmaxlen

smallint

最大行大小

maxirow

smallint

最大非叶索引行大小。

在 SQL Server 2005 及更高版本中,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 分配单元中包含数据,则 dpagesreservedused 列将不返回准确的结果。 此外,将单独跟踪每个索引的页计数,并且不对基表的页计数进行聚合。 若要查看页计数,请使用 sys.allocation_unitssys.partitions 目录视图或 sys.dm_db_partition_stats 动态管理视图。

在 SQL Server 2000 和更早期版本中,数据库引擎维护行级修改计数器。 现在,此类计数器在列级维护。 因此,将计算 rowmodctr 列并生成与早期版本中的结果类似的结果,但这两个结果不完全相同。

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

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

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

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

  • 使用应用程序级信息确定更新统计信息的时间。 例如,每次将 identity 列的最大值更改 10,000 以上或每次执行大容量插入操作时。

请参阅

参考

目录视图 (Transact-SQL)

将系统表映射到系统视图 (Transact-SQL)

sys.indexes (Transact-SQL)