Можно ли добавить столбец в существующий кластерный индекс в SQL Server? - PullRequest
4 голосов
/ 29 марта 2012

Я хотел бы знать, возможно ли добавить столбец к существующему кластерному индексу в таблице в SQL Server 2008?Если так, возможно ли сделать это онлайн?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Вы можете изменить определение кластеризованного индекса (т. Е. Добавить новый столбец к ключам) как онлайн-операцию. У меня нет экземпляра для проверки, но синтаксис выглядит примерно так:

create clustered index [indexname] on [table]([column], [column], [column], ...)
with (drop_existing =on, online = on);

Операция полностью онлайн (таблица открыта для чтения, вставки, обновления и удаления). Вам нужен экземпляр Enterprise Edition (потому что только EE поддерживает операции построения индекса в сети), и таблица не может иметь столбцы больших объектов (по крайней мере, до SQL Server 2012 не может ).

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

1 голос
/ 29 марта 2012

Вы не можете добавить столбец к существующему индексу, но вы можете удалить индекс и воссоздать его с дополнительным столбцом.

Вы можете сделать это онлайн, но это может быть трудоемкой и длительной операцией, если таблица большая.

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