Путаница: почему SSMS создает кластерный индекс по умолчанию для первичного ключа с идентификатором
Я только что выполнил следующий скрипт
CREATE TABLE Test
(
ID INT IDENTITY PRIMARY KEY,
Info nvarchar(50)
)
К моему удивлению, SSMS создала кластерный индекс для столбца ID. Итак, мой вопрос, почему не некластеризованный индекс?
Насколько я понимаю, было бы лучше использовать в этом случае некластеризованный индекс, потому что из-за бинарного дерева гораздо быстрее искать идентификатор со значением X вместо использования кластерного индекса, где значения как-то сгруппированы. Кроме того, если я думаю о получении данных, необходимо как-то быстро получить доступ к идентификатору. Как и во многих написанных статьях, двоичное дерево - это быстрый способ получения определенного или нескольких идентификаторов. В дополнение к этому, в большинстве случаев я вижу, что первичный ключ любой таблицы является идентификатором со значением автоинкремента. Таким образом, довольно распространено использовать этот подход принципа автоинкрементации.
Итак, в чем преимущество использования некластеризованного ключа и почему это по умолчанию в SSMS?
1 ответ
По умолчанию первичный ключ таблицы поддерживается кластеризованным индексом - это просто поведение SQL Server по умолчанию. При необходимости его можно изменить:
CREATE TABLE Test
(
ID INT IDENTITY PRIMARY KEY NONCLUSTERED,
Info nvarchar(50)
)
но особенно в INT IDENTITY
В этом случае это почти идеальный кластеризованный индекс, который вы можете себе представить в своей таблице - так что "хорошо", что SQL Server делает этот выбор по умолчанию.
Каждая "серьезная" таблица в SQL Server должна иметь правильно выбранный кластеризованный индекс (потому что альтернатива - куча - медленнее и более громоздкая для точной настройки во всех отношениях) - и небольшая (4 байта) статическая (никогда не меняется)), уникальный столбец, как INT IDENTITY
идеально подходит в качестве кластеризованного индекса в этой таблице.
Если вы хотите узнать больше о том, как правильно выбирать ключ кластеризации и почему это так важно, вам следует проверить все, что Кимберли Трипп может сказать по этой теме: