Указывает ли index_id = 0 в sys.indexes на таблицу?

К сожалению, BOL немного расплывчата в этом, но index_id = 0 на sys.indexes или sys.partitions, как представляется, относится к самой таблице, где в таблице нет кластерного индекса. Правда - или я чего-то не хватает?

Ответ 1

Указывает ли index_id = 0 в sys.indexes к самой таблице?

Нет. Для таблиц с кучей он всегда будет существовать и относится к IAM (Карта распределения индексов). Для таблиц с кластеризованными индексами он не будет существовать.

Обратите внимание, что "type_desc" - HEAP для этих индексов, есть действительно хорошая запись в блоге о Карта распределения индексов.

Итак, таблицы Heap (те, у которых нет кластерного индекса) всегда будут иметь один индекс с записью index_id = 0, а таблицы с кластерными индексами всегда будут иметь запись с index_id = 1.