Если это не таблица ссылок, у вас обычно есть кластеризованный индекс на 1 столбец. И общая рекомендация - выбрать наименьший возможный тип для столбца с кластерным индексом (безусловно, который соответствует вашим требованиям). Наличие множества столбцов не только увеличивает размер (каждый некластеризованный индекс сохраняет значение кластерного индекса [включает кластерный индекс]!), но также значительно увеличивает шансы на внешнюю фрагментацию и ухудшает производительность даже inserts
. Таким образом, мои ответы на ваши вопросы.
- Это правильно, кластерный индекс представляет собой таблицу, нет необходимости включать в себя все столбцы
- Да, абсолютно
- Я не уверен, что, если вы спрашиваете о выполнении переключения себя или влияние на производительность наличия меньший (или меньше столбцов) кластерный индекс, поэтому я постараюсь ответить на оба.
- Переключение. Когда вы переключаете кластерный индекс на некластеризованный, я считаю, что он не должен быть дорогим (я не думаю, что движок будет фактически перетасовывать блоки и экстенты, чтобы сделать кучу). Определенно IAM должен быть изменен, что потребует времени. Изменение некластеризованного индекса для кластеризации предполагает гораздо большую активность. Помимо перемещения данных в соответствии с кластеризованным ключевым ключом, SQLServer должен обновлять все некластеризованные индексы.
- Дальнейшее воздействие (довольно большая тема, я поставил очень короткий ответ). Меньший кластеризованный индекс означает меньшее пространство, необходимое для хранения всех других индексов, что, в свою очередь, означает более быстрый доступ к данным и меньшее потребление ресурсов движком.
Update Я понял (благодаря Aaron Bertrand за указание, что выход) я сделал весьма расплывчатое заявление о включении кластерного индекса для некластеризованных индексов. Чтобы быть абсолютно правильным, каждый некластеризованный индекс включает в себя локатор строк, который указывает на строку. Когда таблица кластеризована, локатор строк - это кластерный индексный ключ. More info regarding clustered indexes.
+1 Вы намекали на это, но чтобы быть более явным, ключ кластеризации включен во все некластеризованные индексы ... поэтому чем шире это, тем более широкие все некластеризованные индексы тоже. –
@ Аарон Бертран: Спасибо, я сделаю это смелым, чтобы привлечь больше внимания. – a1ex07
Да, я вижу это сейчас в 1-м абзаце, я так и не понял, что это было смутно указано только в последней пуле. –