Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server - Quando usar o índice clusterizado versus não clusterizado?


Só quero deixar um aviso:por favor, com muito cuidado escolha seu índice clusterizado! Toda tabela de dados "regular" deve ter um índice clusterizado, pois ter um índice clusterizado realmente acelera muitas operações - sim, acelera , até mesmo insere e exclui! Mas somente se você escolher um bom índice agrupado.

É o mais replicado estrutura de dados em seu banco de dados SQL Server. A chave de clustering também fará parte de cada índice não clusterizado em sua tabela.

Você deve ter muito cuidado ao escolher uma chave de cluster - deve ser:

  • restringir (4 bytes ideais)

  • único (afinal, é o "ponteiro de linha". Se você não o tornar único, o SQL Server fará isso para você em segundo plano, custando alguns bytes para cada entrada vezes o número de linhas e o número de índices não clusterizados que você tem - isso pode ser muito caro!)

  • estático (nunca mude - se possível)

  • idealmente sempre crescente para que você não acabe com uma fragmentação de índice horrível (um GUID é o oposto total de uma boa chave de cluster - por esse motivo específico)

  • deve ser não anulável e idealmente também com largura fixa - um varchar(250) faz uma chave de cluster muito ruim

Qualquer outra coisa deve realmente ser o segundo e o terceiro nível de importância por trás desses pontos ....

Veja alguns dos trabalhos de Kimberly Tripp (A Rainha da Indexação ) sobre o assunto - qualquer coisa que ela tenha escrito em seu blog é absolutamente inestimável - leia-o, digira-o - viva por ele!