Я справился с сетевым аудитом европейских операций ОЧЕНЬ крупного производителя компьютеров (Ирландия Гм). Потребовались недели, но мы действительно обнаруживали, что каждый бит данных, которые впрыскивались вниз к каждому жесткому диску каждого ПК/сервера, который они сделали, перемещался через те же 4 потока провода - у них был единственный порт на 1 Гбит/с, делающий ВСЕ их сборки. Когда мы сказали им, что они РАБОТАЛИ для получения большего количества cable/SFPs и мультисоединили его каналом в течение 30 минут, но это было шокером.
При отбрасывании кластерного индекса, таблица становится "кучей". Так как "куча" имеет совсем другую физическую структуру от индексов, данные должны будут быть скопированы в новую структуру. "Куча" не имеет никакого порядка вообще. Когда Вы добавите назад новый кластерный индекс, данные будут скопированы с "кучи" в новый индекс, и порядок будет определен новым кластеризованным ключом.
Если Вы хотите сохранить существующий порядок затем все, что необходимо сделать, присваивают новые целочисленные идентификаторы правильно:
ALTER TABLE Table ADD Integer_Id INT;
GO
WITH cte AS (
SELECT ROW_NUMBER() OVER (ORDER BY Guid_Id) as RowOrderByGuid,
Guid_Id
FROM Table)
UPDATE t
SET t.Integer_Id = c.RowOrderByGuid
FROM Table t
JOIN cte c ON t.Guid_Id = c.Guid_Id;
Теперь порядок Integer_Ids будет соответствовать порядку Гуидов. Можно отбросить столбец Guid и добавить кластерный индекс на новом столбце Integer, и физический порядок записей был сохранен.
По определению кластерный индекс налагает физическое упорядочивание на фактические страницы данных; таким образом, да, если Вы отбрасываете кластерный индекс и создаете новый, это вызовет физическое переупорядочение данных.
В Вашем случае я думаю, что безопасно предположить, что следующее произойдет:
Нижняя строка: Вы окажете огромное влияние, и Вы могли получить строки от незаказанного ВЫБОРА в том же порядке, Вы получаете их теперь. Необходимо будет попробовать.
Кластерный индекс, по определению, определяет физический порядок данных, поэтому при создании нового кластерного индекса данные будут переупорядочены; если это - большая таблица, запланируйте это требовать времени.
Если Вы составите таблицу с кластеризованным первичным ключом и затем отбросите кластеризованный PK, то физический порядок данных в таблице будет без помех. Однако физический порядок результатов запроса, как гарантируют, не совпадет с порядком в таблице, таким образом, это упорядочивание будет довольно бессмысленно.
Если Вы затем добавите целочисленный столбец и создадите кластеризованный первичный ключ на этом, то таблица будет перестроена в любой порядок сортировки по ключу в. Это может или не может быть тем же физическим порядком как GUID в зависимости от того, как ключ присвоен. Вы могли явно присвоить его на основе порядка сортировки ключа GUID (например, использующий row_number () по старому упорядочиванию ключа), или Вы могли присвоить ему некоторый другой путь. Если Вы не предпринимаете шаги, чтобы гарантировать, что упорядочивание явно сделано тем же, физический порядок или строки в таблице, как гарантируют, не будут управлять упорядочиванием Вашего нового ключа.