конвертировать кластерный индекс в некластерный индекс? - PullRequest
4 голосов
/ 29 августа 2010

Можно ли преобразовать кластерный индекс в некластерный индекс или некластерный индекс к кластерному индексу в SQL Server 2005.

Пожалуйста, преобразуйте этот запрос в кластерный индекс:

create index index1 on mytable(firstcolumn)

Пожалуйста, преобразуйте этот запрос в некластеризованный индекс:

create clustered index clusindex1 on mytable(cluscolumn)

Ответы [ 3 ]

5 голосов
/ 29 августа 2010

Это нечто большее, чем кажется

для создания кластеризованного индекса

drop index mytable.clusindex1 
go

create clustered index clusindex1 on mytable(cluscolumn)

для создания некластеризованного индекса

drop index mytable.clusindex1 
go

create index clusindex1 on mytable(cluscolumn) --non clustered is default

, сказав, чтовы можете иметь только один кластеризованный индекс на таблицу, поэтому, если вы попытаетесь удалить индекс и воссоздать его как кластерный индекс, он потерпит неудачу, если у вас уже есть кластерный индекс.Всякий раз, когда вы удаляете кластеризованный индекс, все некластеризованные индексы также удаляются и воссоздаются, указывая на кучу, а затем снова удаляются и воссоздаются при создании кластеризованного индекса, теперь указывающего на кластерный индекс (ищите предложение WITH DROP_EXISTING)

Я бы сказал, посмотрите, как работает индексирование в Books On Line, прежде чем вы начнете удалять и воссоздавать индексы

3 голосов
/ 29 августа 2010

Это не запросы;это команды DDL.Удалите и заново создайте индексы по своему усмотрению, например так:

drop index mytable.index1
go

create nonclustered index index1 on mytable (firstcolumn asc)
go
0 голосов
/ 20 апреля 2012

Я также хотел знать, можно ли преобразовать (изменить) кластерный индекс в некластеризованный индекс. Я не верю, что это можно сделать. Существующий кластерный индекс должен быть сначала удален, а затем должен быть создан новый некластеризованный индекс (возможно, с тем же именем, что и кластерный индекс). То же самое верно для преобразования некластеризованного индекса в кластеризованный индекс.

Я понятия не имею, почему вы запрашиваете преобразование «запросов», но @Tahbaza верна в том смысле, что код, включенный в ваш вопрос, на самом деле не является запросом. Это операторы T-SQL для внесения изменений в «определения данных» (т. Е. Схему [структуру] вашей базы данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...