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_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)
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈