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

Problemas de fragmentação do SQL Server


Os índices clusterizados controlam a ordem dos dados no DISK. Essa é uma das principais razões pelas quais geralmente é recomendado que você configure uma chave de número inteiro sempre crescente para atuar como o índice clusterizado. Dessa forma, à medida que mais dados são adicionados à tabela, eles são adicionados ao final dos dados existentes no momento.

Se não for um número de aumento automático e novas linhas puderem conter valores que seriam ordenados em algum lugar entre os valores existentes, o SQL Server basicamente enviará os dados para o disco ao qual pertencem (para manter a ordem dos valores de chave de índice clusterizado), produzindo fragmentação e sobrecarga potencialmente grave à medida que o IO grava, tornando o banco de dados ainda mais lento.

Eu suspeito que você tenha o mesmo problema com seus valores de UserRecord.

Então, o que eu faria é adicionar uma chave primária de aumento automático em cluster separada a cada tabela e retrabalhar suas referências e consultas FK quando necessário.