Warum kann ein nicht gruppierter Index nicht mit der Option online = on gelöscht werden?

8

Beim Versuch, einen nicht geclusterten Index mithilfe der Online-Option zu DROP INDEX [IX_MYINDEX] ON [dbo].[myTable] WITH ( ONLINE = ON )löschen, wird die folgende Fehlermeldung angezeigt.

Msg 3745, Level 16, State 1, Line 16 
Only a clustered index can be dropped online.

In der SQL Server-Dokumentation heißt es eindeutig:

Die ONLINE-Option kann nur angegeben werden, wenn Sie Clustered-Indizes löschen.

https://msdn.microsoft.com/en-us/library/ms176118.aspx

Aber kann mir bitte jemand erklären, warum dies der Fall ist? Nach meiner Erfahrung ist es viel wahrscheinlicher, dass Sie einen nicht gruppierten Index löschen als einen gruppierten Index, da der gruppierte Index in den meisten Fällen auch Ihr Primärschlüssel ist.

BateTech
quelle

Antworten:

12

Weil das Löschen eines NCI bereits so viel online ist, wie es nur geht. Ist eine Operation nur für Metadaten. Es wird nicht einmal Daten gelöscht, ein verworfenes Index-Rowset wird einfach freigegeben, d. H. die gleiche Operation wie beim Abschneiden.

Das Löschen eines Clustered-Index impliziert andererseits eine Neuerstellung und ist eine Operation mit Datengröße. Daher ist es sinnvoll, eine Online-Alternative zu haben.

Remus Rusanu
quelle