хорошо / не важно / плохо включить первичный ключ в индекс покрытия? - PullRequest
42 голосов
/ 16 марта 2011

- это good или doesn't matter или bad, чтобы ВКЛЮЧИТЬ первичный ключ в индекс покрытия ??

CREATE NONCLUSTERED INDEX index_name_here ON dbo.table_name_here
(column_to_index_here) 
INCLUDE (primary_key_column,other_column_here)
WITH( STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, --<default junk from SSMS
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

Думаю, это не имеет значения, так как ПК в любом случае будет в индексе.

РЕДАКТИРОВАТЬ - уточнить.
мой primary_key_column сгруппирован, но вы можете объяснить / дать информацию, когда это не слишком.

Я присоединюсь к dbo.table_name_here в столбце column_to_index_here, а затем присоединюсь к другим таблицам в primary_key_column и other_column_here.

Ответы [ 2 ]

55 голосов
/ 16 марта 2011

Если вы кластеризуетесь на своем ПК, то не имеет значения . SQL Server будет игнорировать его, поскольку все некластеризованные индексы содержат ключ кластеризованного индекса для этой строки как часть их определения.

Он не будет использовать лишние пробелы в индексе, но излишне включать его в определение.

Если ваш PK не включен в кластеризованный индекс, включайте его только в том случае, если вам нужно будет извлечь это поле как часть того же запроса, который использует индекс.

Также имейте в виду, когда вы INCLUDE поле в индексе, оно НЕ находится в неконечных узлах, т. Е. Индекс не сортируется по этому значению.

3 голосов
/ 16 марта 2011

, так как в любом случае PK будет в индексе.

Предполагается, что вы подразумеваете, что PK находится в другом индексе с этим утверждением, независимо от того, включаете ли вы первичный ключ в этот индексзависит от того, будете ли вы выбирать его в своих запросах.Если вы собираетесь его выбрать, включите его в индекс, если нет, оставьте его.Также для таблицы, кластеризованной на PK, смотрите ответ @JNK.

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