Se eu definir a compactação (página ou linha) no índice clusterizado de uma tabela, isso é o mesmo que definir a compactação na tabela?
O SQL Server fornece opções para fazer ambos, o que sugere que são diferentes, mas tive a impressão de que um índice clusterizado e uma tabela eram essencialmente a mesma coisa, e meu modelo mental de como os índices clusterizados funcionam me diz que compactar o índice clusterizado também deve comprimir a tabela.
Sim.
Do MSDN :
A razão pela qual ambas as sintaxes existem é porque uma tabela não tem necessariamente um índice clusterizado. Em outras palavras,
ALTER INDEX ALL ON ... REBUILD
não afeta um heap (embora toque todos os não agrupados), portanto, a outra rota serve a esse propósito.Além disso, embora a documentação não o diga explicitamente, a
ALTER TABLE ... REBUILD
sintaxe não habilita/desabilita a compactação de todos os índices não clusterizados na tabela. Afeta apenas o heap ou o índice clusterizado.Por fim, se você estiver testando isso por meio do SSMS, esteja ciente de que poderá obter erros ao desabilitar a compactação - faça o script para que possa ver o que realmente está acontecendo.
O índice clusterizado é a tabela. Portanto, configurá-lo em qualquer um é o mesmo. Você pode validar isso comparando os dois casos aqui:
O SQL Server também fornece várias maneiras diferentes de tornar uma coluna exclusiva:
...ou...
...ou...
...ou...
Todos eles terminarão com a mesma implementação subjacente (com nomes diferentes).
Só porque existem diferentes maneiras de chegar ao trabalho, não significa que você não acabará no escritório. :-)