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

Índices agrupados em colunas sem identidade para acelerar inserções em massa?


Bem, eu testei e colocar um índice clusterizado nas duas colunas de "definição de bloco" aumenta o desempenho da minha tabela.

Inserir um pedaço agora é relativamente rápido em comparação com a situação em que eu tinha uma chave IDENTITY clusterizada e quase tão rápido quanto quando eu não tinha nenhum índice clusterizado. A exclusão de um bloco é mais rápida do que com ou sem índice clusterizado.

Eu acho que o fato de que todos os registros que eu quero excluir ou inserir são garantidos para estarem todos juntos em uma determinada parte do disco rígido torna as tabelas mais rápidas - parece lógico para mim.

Atualizar :Após um ano de experiência com este design posso dizer que para que esta abordagem funcione, é necessário agendar a reconstrução regular de todos os índices (fazemos isso uma vez por semana). Caso contrário, os índices ficarão fragmentados muito em breve e o desempenho será perdido. No entanto, estamos em um processo de migração para um novo design de banco de dados com tabelas particionadas, que é basicamente melhor em todos os aspectos - exceto pelo custo da licença do Enterprise Server, mas já nos esquecemos disso. Pelo menos eu tenho.