Se o índice clusterizado do SQL Server for a ordem física da tabela e todas as colunas estiverem incluídas, será a própria tabela? Como o índice clusterizado é armazenado fisicamente?
Eu vi as perguntas e respostas O que é um índice agrupado? mas minha pergunta é sobre a organização física destes, não sobre sua função.
Não se prenda ao aspecto físico/lógico. É apenas terminologia e o que você quer dizer com "físico" é apenas uma questão de nível de abstração no final. IMO, o termo "físico" é sem sentido, confuso e deve ser evitado neste contexto.
Ambos os tipos de índices são índices B-Tree. Certifique-se de entender o que é isso e que você pode visualizar um índice B-Tree.
Para os clusterizados, a folha contém não apenas a chave, mas também todas as outras colunas, tornando-se a "tabela em si".
Para um índice não clusterizado, a folha tem apenas as colunas de chave e as colunas incluídas - junto com um ponteiro para os dados reais.
A folha está ligada onde a primeira página (8 KB) aponta para a próxima, etc (uma lista duplamente ligada). À medida que as modificações são feitas, você pode obter divisões de página onde uma página é inserida nesta lista vinculada, portanto, observando os números de página no arquivo, você pula para frente e para trás ao seguir a lista vinculada do início ao fim (usando os ponteiros) . Isso se aplica a índices clusterizados e não clusterizados.
O índice clusterizado é a ordenação lógica dos dados da própria tabela em uma estrutura B-Tree . Sem um índice clusterizado, a própria tabela é armazenada em uma estrutura de dados Heap , logicamente. Este artigo, Clustered Index vs Heap in SQL Server , aborda as diferenças estruturais entre os dois.
Uma outra coisa a ser observada é que o índice clusterizado também especifica uma ordenação deliberada dos dados, quando armazenados logicamente, enquanto uma tabela sem um índice clusterizado e, portanto, armazenada logicamente como um heap, normalmente não terá ordem e, portanto, é classificada logicamente aleatoriamente.
Os benefícios de utilizar um índice clusterizado em uma tabela, quando arquitetado corretamente, é que ele pode ser usado para melhorar o desempenho das consultas que ele cobre quando o SQL Engine pode buscar nele os predicados dessas consultas, em oposição a uma tabela sem um índice clusterizado que acabaria exigindo uma verificação completa .
Para sua pergunta sobre as diferenças entre um índice clusterizado e um índice não clusterizado : o índice clusterizado classifica a própria tabela, logicamente, o índice não clusterizado classifica uma cópia dos dados (quaisquer campos que o índice não clusterizado abrange e inclui) da tabela, logicamente.
Independentemente da estrutura de dados lógica usada, fisicamente os dados são armazenados em Páginas e Extensões no disco. As páginas geralmente são conjuntos de 8 KB de dados, enquanto as extensões são uma coleção de 8 páginas fisicamente contíguas.