Ao tentar descartar um índice não clusterizado usando a opção online como DROP INDEX [IX_MYINDEX] ON [dbo].[myTable] WITH ( ONLINE = ON )
, recebo a seguinte mensagem de erro.
Msg 3745, Level 16, State 1, Line 16
Only a clustered index can be dropped online.
A documentação do SQL Server afirma claramente:
A opção ONLINE só pode ser especificada quando você descarta índices clusterizados.
https://msdn.microsoft.com/en-us/library/ms176118.aspx
Mas alguém pode me explicar por que isso acontece? Na minha experiência, seria muito mais provável que você descartasse um índice não clusterizado do que um índice clusterizado, pois o índice clusterizado na maioria dos casos também é sua chave primária.
Porque largar um NCI já é o mais online possível. É uma operação apenas de metadados. Não há nem exclusão de dados, um conjunto de linhas de índice descartado é simplesmente desalocado, ou seja. a mesma operação que truncate faz.
A eliminação de um índice clusterizado, por outro lado, implica uma reconstrução e é uma operação de tamanho de dados, portanto, faz sentido ter uma alternativa online.