Почему SQL Server добавляет 4-байтовое целое число к неуникальным кластеризованным индексам


Можно определить неуникальные столбцы как кластеризованные, так и некластеризованные индексы. Однако SQL Server добавляет 4-байтовое целое число к индексированным столбцам в случае кластеризованного индекса, если столбец не определен как уникальный. Это делается для сохранения "уникальности" записи внутри, даже если две или более записей могут иметь значение для этого столбца. Почему это целое число не является необходимым в случае некластеризованного индекса?

2 2

2 ответа:

Некластеризованный индекс уже включает столбец кластеризованного индекса, поэтому он может ссылаться на точную строку, с которой он коррелирует. Следовательно, с помощью uniquifier в кластеризованном индексе некластеризованный индекс также будет включать uniquifier.

Хорошее объяснение здесь: понимание и изучение Uniquifier в SQL Server

Я полагаю, что это имеет отношение к локатору строк.

Ширина строки некластеризованного индекса = ширина столбца некластеризованного индекса + ширина столбца кластеризованного индекса = размер типа данных столбца + размер типа данных столбца.