MSSQL Server中非聚集索引的index_id是如何计算的?
sys.dm_db_partition_stats 非聚集索引index_id取值规则
首先明确:sys.dm_db_partition_stats 中的index_id列不是动态计算生成的,是直接关联继承自sys.indexes系统视图中对应表下索引的固定分配标识,具体取值逻辑如下:
- 堆表的基础数据行对应
index_id = 0 - 聚集索引的基础数据行对应
index_id = 1 - 普通非聚集索引的
index_id从2开始,按照索引创建的先后顺序依次递增分配 - 特殊类型的非聚集索引(包括XML索引、空间索引、非聚集列存储索引)同样遵循
index_id > 1的分配规则,从2开始按创建顺序取值
补充说明:同一张表下的
index_id是唯一的,删除索引后被释放的index_id不会被后续新建的索引复用,只有整张表被删除重建时,对应索引的index_id才会重新分配。
内容的提问来源于stack exchange,提问作者Nikhil Padole
相关产品推荐
相关产品推荐

