Почему SQL Server 2008 предлагает использовать столбец первичного ключа в качестве включенного столбца в индексе - PullRequest
4 голосов
/ 15 марта 2010

SQL Server 2008 говорит мне включить первичный ключ в индекс в поле «Включенный столбец». Я думал, что ПК был автоматически возвращен со всеми индексами?

1 Ответ

6 голосов
/ 15 марта 2010

Нет - не первичный ключ - ключ кластеризации - это.

По умолчанию это то же самое в SQL Server - но это не обязательно. Вполне возможно, что в этой таблице PK отличается от ключа кластеризации. В этом случае индекс не будет иметь никакого знания о PK.

Первичный ключ - это логическая конструкция, позволяющая однозначно и четко идентифицировать каждую строку в вашей таблице. Вы используете его для ограничений FK и т. Д.

Ключ кластеризации с другой стороны - это физический индекс - это «уличный адрес» или номер страницы, где хранятся ваши реальные физические данные. По этой причине он включается в каждый некластеризованный индекс той же таблицы - он служит для поиска фактической строки данных, как только вы нашли запись в некластеризованном индексе.

ОБНОВЛЕНИЕ: хорошо, поэтому я не удержался от вопроса «Королевы индексации» Кимберли Трипп о том, что она думает по этой теме - вот ее ответ:

Если PK на самом деле является ключом CL, то Вы правы ... это будет автоматически там. Что касается «где» он находится сказал - я не уверен (DMV, DTA, где-то???). Несмотря на это, я уверен, что любой инструмент, который он использует, просто исходя из того, что нужно для запроса. Это означает, что инструмент даже не посмотрите, был ли это ключ CL ... добавление явно не добавляет в два раза, так что это не имеет большого значения в все.

Это помогает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...