Некластеризованный индекс имеет точно такую же структуру, что и кластеризованный индекс, но с двумя важными отличиями:
♦ некластеризованный индекс не изменяет физический порядок строк в таблице;
♦ страницы листьев в некластеризованном индексе состоят из индексных ключей и закладок.
Физический порядок строк в таблице не изменяется, если для этой таблицы определяется один или более некластеризованных индексов. Для каждого некластеризованного индекса Database Engine создает дополнительную индексную структуру, которая сохраняется в индексных страницах.
Закладка в некластеризованном индексе показывает, где находится строка, соответствующая индексному ключу. Закладка, как часть индексного ключа, может иметь две формы, в зависимости от формы таблицы, т. е. таблица может быть в кластеризованной форме или находиться в куче. (В терминологии SQL Server куча - это таблица без кластеризованного индекса.) Если существует кластеризованный индекс, то закладка некластеризованного индекса указывает на структуру В-дерева кластеризованного индекса таблицы. Если в таблице нет кластеризованного индекса, то закладка идентична идентификатору строки (Row IDentifier, RID), который содержит три части: адрес файла, в котором располагается соответствующая таблица, адрес физического блока (страницы), в котором хранится строка, и смещение, которое является позицией строки внутри страницы.
Как видно из предыдущих обсуждений, поиск данных с использованием некластеризованного индекса может осуществляться одним из двух различных способов в зависимости от формы таблицы:
♦ куча- проход по некластеризованной индексной структуре, за которым следует поиск строки с использованием RID;
♦ кластеризованная таблица- проход по некластеризованной индексной структуре, за которым следует проход по соответствующему кластеризованному индексу.
В обоих случаях количество операций ввода/вывода достаточно велико, так что вам при проектировании некластеризованного индекса нужно проявлять осторожность, и его следует использовать, только если вы уверены, что это значительно повысит производительность. На рис. 10.3 показана структура В-дерева для некластеризованного индекса.