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_units 或 sys.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)