Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Замена кластерного индекса. Необходим ли rebuild остальных индексов / 7 сообщений из 7, страница 1 из 1
13.04.2021, 13:36
    #40062030
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
Или после замены clx все остальные индексы сами перестроятся автоматически?
...
Рейтинг: 0 / 0
13.04.2021, 13:41
    #40062035
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
Шамиль Фаридович
Или после замены clx все остальные индексы сами перестроятся автоматически?


смотря что подразумевать под заменой

https://bornsql.ca/blog/rebuilding-clustered-index-also-rebuild-non-clustered-indexes/

https://www.mssqltips.com/sqlservertip/1362/efficiently-rebuild-sql-server-clustered-indexes-with-dropexisting/
...
Рейтинг: 0 / 0
13.04.2021, 13:54
    #40062042
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
komrad,
я имел в виду пересоздание.

A non-clustered index is rebuilt if the clustered index is dropped and recreated. Without a clustered index, the non-clustered indexes will have to refer to the row identifier (RID) in the underlying heap instead.

Это и есть ответ? Сами перестроятся?
...
Рейтинг: 0 / 0
13.04.2021, 14:01
    #40062048
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
Шамиль Фаридович,

да, но перестроятся два раза - сначала когда вы удалите, потом - когда создадите новый,
поэтому лучше их грохнуть до начала процесса
...
Рейтинг: 0 / 0
14.04.2021, 14:09
    #40062430
Шамиль Фаридович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
Оказывается при применении опции DROP_EXISTING пересоздание кластерного индекса может вовсе не вызвать перестроения некластерных:
https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-index-transact-sql?view=sql-server-ver15#drop_existing-clause

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

Правда не совсем понятно, что вообще меняется при такой операции, разве что fillfactor)
...
Рейтинг: 0 / 0
14.04.2021, 15:26
    #40062472
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
Шамиль Фаридович
Правда не совсем понятно, что вообще меняется при такой операции, разве что fillfactor)
Физическое месторасположение индекса может меняться (файловая группа).
...
Рейтинг: 0 / 0
14.04.2021, 15:58
    #40062487
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замена кластерного индекса. Необходим ли rebuild остальных индексов
о чем спор, товарищи?
если меняете **ключ** кластерного,
который, очевидно, присутствует на листовом уровне любого некластерного,
то конечно же перестроение некластерных гарантировано.

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

про DROP_EXISTING:

я его юзаю для перестроения некластерных, когда мне надо поменять список INCLUDE.
таким образом избегаю сортировки.
а в применении к кластерному, где и без того все поля "INCLUDED",
пожалуй, единственное применение указал Гавриленко:
если кластерный перестраивается на новой FG,
то да, ключ же не меняется, DROP_EXISTING позволит не переходить в состояние "куча" и некластерные не будут перестроены
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Замена кластерного индекса. Необходим ли rebuild остальных индексов / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]