Локатор строк в некластеризованном индексе

Я читал о Non Clustered Index что говорит "Nonclustered Индекс содержит только значения из индексированных столбцов и локаторов строк, которые указывают на фактические строки данных, а не содержат сами строки данных. Это означает, что механизм запросов должен сделать дополнительный шаг, чтобы найти фактические данные ".

Запрос - мне не понятно с Row Locator, Я предполагаю, что это не какой-либо Primary key, В фоновом режиме происходит что-то, что связано с Row-Locator уникально идентифицировать строку.

2 ответа

Решение

Если таблица имеет уникальный кластеризованный индекс, "локатор строк" ​​состоит из столбцов кластеризованного индекса.

При использовании неуникального кластеризованного индекса"локатор строк" ​​состоит из столбцов кластерного индекса, а также нового поля, добавляемого SQL Server, чтобы сделать ссылку уникальной. Новое поле невидимо для пользователей. Он называется "uniqueifier" и состоит из четырех байтов.

В таблице без кластеризованного индекса (или кучи) "указатель строки" является идентификатором RID или строки. МПОГ указывает на физическое местоположение. Он состоит из идентификатора файла (ID), номера страницы и номера строки на странице.

Одним из практических следствий "локатора строк" ​​является то, что имеет смысл иметь небольшой первичный ключ для таблицы с большим количеством индексов:) Полная информация на этой странице MSDN.

@Nilish: "Ключ-кандидат" - это термин, используемый, когда вы решаете, какой столбец (столбцы) использовать для первичного ключа. И SQL ничего не знает об этом. Я не знаю, что означает "альтернативный ключ", за исключением того, что это еще один возможный набор столбцов, который можно использовать для первичного ключа.

Таким образом, в SQL нет понятия "приоритеты" для них. SQL не знает, какие столбцы однозначно идентифицируют запись, пока вы не сообщите ее, создав первичный ключ. Как только вы определите ключи, SQL использует их.

В таблице нет ни индексов (куча), ни неуникального кластеризованного индекса, либо уникального кластеризованного индекса. Других возможностей нет. (Первичный ключ - это ОБЫЧНО уникальный кластерный индекс.)

Другие вопросы по тегам