不幸的是,BOL在这方面有点模糊,但是index_id = 0
在表上sys.indexes
或者sys.partitions
似乎是指表中没有聚簇索引的表.是的 - 或者我错过了什么?
sys.indexes中的index_id = 0是否引用表本身?
不,对于基于堆的表,它将始终存在,并且它引用IAM(索引分配映射).对于具有聚簇索引的表,它将不存在.
请注意,"type_desc"是这些索引上的HEAP,有关于索引分配映射的非常好的博客条目.
因此,堆表(没有聚簇索引的表)将始终具有一个带有条目的索引index_id = 0
,而具有聚簇索引的表将始终具有条目index_id = 1
.