Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Удаление кластерного индекса


Автор: Vit 16.5.2006, 21:22
Удаление кластерного индекса занимает очень долго времени, обычно в полтора раза больше чем его создание. Просто интересно стало - почему? Как реально сделан кластерный индекс что его удаление столь трудоёмкая операция. 

Автор: ALKS 17.5.2006, 08:30
кластерный индекс это не индекс собственно вообще... это физическая сортировка таблицы в заданном порядке. т.е. если ты сделал например кластерный индекс по какому-то полю. то строки в таблице физически будут расположены в нужном порядке. отсюда следуют ограничения кластерного индекса - невозможность положить его в другую фаил группу нежели сама таблица или невозможность иметь его более чем один на таблицу smile а вот то что он удаляеться медлеено я честно говря внимания не обращал smile 

Автор: Vit 17.5.2006, 16:13
Цитата(ALKS @  16.5.2006,  23:30 Найти цитируемый пост)
 это физическая сортировка таблицы в заданном порядке.


Хех, это не совсем так... Скорее лишь видимость этой сортировки. Попробуй сделать кластерный индекс по полю типа GUID и сделать Insert в такую таблицу... времени это не займёт больше чем обычно, так что о физической сортировке можно забыть... сказки для пугания новичков... я сам эту байку рассказываю тем кто начинает изучать базы данных, на самом деле всё сложнее:

http://blogs.gotdotnet.ru/personal/Bezzus/CommentView.aspx?guid=2ec662e4-9179-4663-8034-3f54bf198db9

Но даже если предположить что это физическая сортировка - за каким хреном она удаляется ТАК ДОЛГО? Неужели при его удалении база данных "перемешивает" данные специально? 


Цитата(ALKS @  16.5.2006,  23:30 Найти цитируемый пост)
отсюда следуют ограничения кластерного индекса 


А это тут причём? Или вы решили рассказать мне что такое кластерный индекс? Я это знаю, во всяком случае в том объёме в каком это дают BOL и Роберт Вейра.





Цитата(ALKS @  16.5.2006,  23:30 Найти цитируемый пост)
а вот то что он удаляеться медлеено я честно говря внимания не обращал 


Создайте таблицу хотя бы на 10 000 000 записей, создайте кластерный индекс на ней а потом удалите...
  

Автор: ALKS 17.5.2006, 17:16
Vit, спасибо за линк smile

кстати вспомнил такую вещ - при удалении/создании кластерного индекса все остальные не-кластерные  индексы на этой таблице перестариваются. именно поэтому существует совет о том что создавать кластерный индекс над первым у удалять последним. 
Может это и есть причина медленного его удаления? 

Автор: Vit 17.5.2006, 21:15
Добавлено @ 21:24 
Цитата(ALKS @  17.5.2006,  08:16 Найти цитируемый пост)
кстати вспомнил такую вещ - при удалении/создании кластерного индекса все остальные не-кластерные  индексы на этой таблице перестариваются. именно поэтому существует совет о том что создавать кластерный индекс над первым у удалять последним. 
Может это и есть причина медленного его удаления? 


Ещё раз проверил - точно! Самое оно! Действиетльно, время удаления кластерного индекса в точности равно пересозданию всех ранее назначенных индексов. Огромное спасибо!   

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)