У меня есть ограничение PK - кластерный индекс по двум столбцам, который я сейчас удаляю. Команда все еще работает через час. Я бы подумал, что, поскольку я просто снимаю ограничение, операция будет почти мгновенной. Может ли кто-нибудь объяснить мне, что на самом деле происходит под капотом, когда я роняю ПК?
Что происходит, когда я отбрасываю кластерный первичный ключ в SQL 2005
Ответы (3)
Кластерный индекс - это не «просто ограничение», это метод хранения.
Когда вы его отбрасываете, ваши данные переупорядочиваются из кластерного хранилища в хранилище в куче.
Другие индексы обновляются для ссылки на значения RID
вместо PRIMARY KEY
.
Кластерный индекс - это данные, которые объясняют время, необходимое для выполнения.
«КЛАСТЕРИРОВАННЫЙ» индекс физически записывает записи вашей таблицы по порядку на жесткий диск. Таким образом, удаление или изменение этого индекса, скорее всего, приведет к тому, что SQL Server в основном «дефрагментирует» (переупорядочивает) ваш жесткий диск (ну, по крайней мере, ту часть, где находятся данные для этой таблицы).
Обратите внимание, что этот ответ не совсем технический ... но он предназначен для того, чтобы дать вам ответ «о, это вроде как происходит», который обычно более чем достаточно хорош.