Diferença entre a busca de índice em cluster e a busca de índice não em cluster


10

Qual é a diferença entre a busca do Clustered Index (CI) e a busca do Non Clustered Index (NCI)? Um tem desempenho melhor que o outro?

A razão pela qual estou perguntando isso é porque tenho uma tabela com 50 milhões de linhas e 150 colunas. Possui uma coluna denominada IDdefinida como o índice em cluster. Há mais um NCI com o mesmo ID da chave de índice e sete includecolunas -d. Parece-me que o índice NC é uma duplicata aqui e pode ser descartado com segurança.

Então, eu quero algumas opiniões / conselhos de especialistas, se ele puder ser descartado com segurança ou se for mantido intacto?


Você está dizendo que TODAS as colunas estão incluídas no índice sem cluster?
Ian Ringrose

Não. A tabela possui 150 colunas com a coluna ID definida como IC e o índice NCI com a coluna ID novamente como chave de índice e mais 7 colunas incluídas.
SQLPRODDBA

Então, Paul White parece ter dado a resposta correta, no entanto, questiono se você deve alterar a tabela "base" de uma tabela em cluster para uma pilha. Ou até mesmo dividir a tabela, dependendo da frequência com que colunas diferentes são atualizadas, para reduzir o custo do log de transações.
Ian Ringrose

Respostas:


26

Um índice não clusterizado que possua a (s) mesma (s) chave (s) * do índice clusterizado, ainda pode ser útil, porque o índice não clusterizado geralmente será menor e mais denso. Lembre-se de que um índice em cluster inclui todos os dados em linha; portanto, é normalmente o índice mais amplo (menos denso) possível.

* As mesmas colunas-chave, na mesma sequência, classificaram da mesma maneira (asc / desc).

Para uma busca simples (uma busca usando um predicado de igualdade em um índice exclusivo), a principal diferença é a maior chance presumida de que as páginas de índice necessárias para encontrar esse registro único já estejam na memória. Tudo igual, um índice não clusterizado com 100 páginas tem uma chance melhor do que um índice clusterizado armazenado em 10.000 páginas.

Para qualquer outro tipo de busca, exceto um singleton, também haverá um componente de verificação. A parte de varredura também se beneficiará da maior densidade do índice não clusterizado (mais linhas por página). Mesmo que as páginas devam vir do armazenamento persistente, a leitura de menos páginas é mais rápida.

Você deve verificar a documentação do sistema, pedir à pessoa que adicionou o índice e / ou procurar comentários de código para entender por que esse índice existe. Você também precisa verificar cuidadosamente as definições completas do índice , incluindo a compactação, e examinar os scripts de manutenção do índice. Pode haver outros motivos especiais para ter o índice não clusterizado (por exemplo, capacidade de reconstruir online).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.