Что происходит, когда я удаляю кластерный первичный ключ в SQL 2005 - PullRequest
4 голосов
/ 01 апреля 2009

У меня есть ограничение PK - кластеризованный индекс на два столбца, который я отбрасываю. Команда все еще выполняется через час. Я бы подумал, что, поскольку я просто снимаю ограничение, операция будет почти мгновенной. Может кто-нибудь объяснить мне, что на самом деле происходит под капотом, когда я бросаю ПК?

Ответы [ 3 ]

9 голосов
/ 01 апреля 2009

Кластерный индекс - это не просто ограничение, это метод хранения.

Когда вы удаляете его, ваши данные переупорядочиваются из кластерного хранилища в кучное хранилище

Другие индексы обновляются для ссылки на RID вместо PRIMARY KEY значений.

1 голос
/ 01 апреля 2009

Кластерный индекс - это данные, которые объясняют время, необходимое для запуска.

0 голосов
/ 01 апреля 2009

Индекс "CLUSTERED" будет физически записывать записи вашей таблицы в порядке на жесткий диск. Поэтому удаление или изменение этого индекса может привести к тому, что SQL Server в основном «дефрагментирует» (переупорядочивает) ваш жесткий диск (ну, по крайней мере, ту часть, где находятся данные для этой таблицы).

Обратите внимание, что этот ответ не совсем технический ... но он предназначен для того, чтобы дать вам ответ "о, вот что происходит", который обычно более чем достаточно хорош.

...