Índices, Clustered VS NonClustered
Semana passada eu estava ministrando um treinamento de SQL Server, e estava falando sobre Indexação. Em um determinado momento eu explicava que não é necessário informar a chave do índice clustered na criação dos índices nonclustered, pois as colunas chave do clustered já fazem parte do nonclustered.
Mesmo não sendo necessário, na criação do índice nonclustered você pode informar a chave do clustered que o SQL não “duplica” os dados da(s) coluna(s), ou seja, por ter incluído a coluna do clustered no comando de create index, o SQL não mantém duas cópias dos dados no índice nonclustered.
O espaço do índice nonclustered será o mesmo espaço que se você não tivesse especificado a coluna chave do cluster.
Neste momento a seguinte pergunta foi feita por um aluno:
– Pelo fato de não incluir duas vezes a coluna chave do clustered nos nonclustered, o que acontece se eu mudar a chave do índice cluster? Os índices nonclustered mantém a coluna chave antiga?
Resposta: Se você especificou a coluna na criação do índice nonclustered o SQL mantém a coluna mesmo que você mude a chave cluster. Mas se você não especificou a chave o SQL não mantém a coluna. (o que é o comportamento esperado)
Normalmente eu não gosto de especificar a coluna cluster na criação de meus índices nonclustered, mas fique atento de que caso você mude a coluna chave do cluster, isso irá mudar todos os índices nonclustered.
OBS.: Caramba, viu quantas vezes eu escrevi, clustered e nonclustered …
Abraços