На самом деле ваше предположение неверно - все некластеризованные индексы SQL Server включают ключ кластеризации (один или несколько столбцов) и напрямую указывают , а не на какой-то физической странице.
Это предотвращает необходимость реорганизации и обновления большого количества записей индекса в SQL Server, когда страницу нужно разделить на две части или переместить.Поэтому, если вы ищете в некластеризованном индексе и нашли значение, тогда у вас есть ключ кластеризации, и SQL Server потребуется выполнить «поиск по закладкам» (или поиск по ключу), чтобы получить фактическую страницу данных (конечную страницу).в индексе кластеризации), чтобы получить весь набор данных, принадлежащих одной строке.
Тем не менее, если у вас когда-нибудь возникнет ситуация, когда это зависит от упорядочения ключевых столбцов, то вам все равно может понадобитьсясоздать индекс специально для (guid, category)
- конечно, в этом случае SQL Server достаточно умен, чтобы выяснить, что столбец ключа кластеризации уже есть в индексе и не будет добавлять его еще раз.
Тот факт, что столбцы ключа кластеризации включены в каждый некластеризованный индекс, является еще одной веской причиной, по которой ваши ключи кластеризации должны быть узкими, статичными и уникальными.Делать их слишком широкими (больше 8 байт) - верный рецепт раздувания и замедления.