O que seria o CLUSTERED ao lado do comando primary key? Para que serve?
O que seria o CLUSTERED ao lado do comando primary key? Para que serve?
Olá Jaelson, tudo bem? Eu mesmo respondi uma dúvida bastante semelhante, nesse outro tópico. Minha opinião é:
Primeiro o que você deve saber é que mesmo se você não informar a clausura CLUSTERED, por padrão o SQL Server vai criar o campo do tipo CLUSTERED, então ambos os comandos que você usou resultaram na mesma ação, então ambos os comandos não tem diferença, você pode perceber isso fazendo o seguinte, crie duas tabelas, uma usando o CLUSTERED e outra sem usar, e depois execute o comando para cada uma das duas tabelas:
SELECT * FROM sys.indexes
WHERE object_id = OBJECT_ID('nome_da_tabela')
Como resultado ambas as consultas você vai ter como o resultado o "CLUSTERED" no campo TYPE_DESC.
A diferença que existe na verdade é entre os campos do tipo CLUSTEREDe NONCLUSTERED. Os índices do tipo CLUSTERED define a ordem em que os dados são fisicamente armazenados em uma tabela, isso dentro da tabela, sendo único, já os índices NONCLUSTERED é armazenado em um local e os dados da tabela são armazenados em outro local. Assim, os índices CLUSTERED ganham em performance por estarem na própria tabela.
Espero ter esclarecido sua dúvida!