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

O comando DELETE é muito lento em uma tabela com índice clusterizado


Pode ser lento porque uma grande exclusão gera um grande log de transações. Tente excluí-lo em pedaços, como:
WHILE 1 = 1
BEGIN
    DELETE TOP (256) FROM FTPLog WHERE FTPLogId <= @MaxFTPLogId
    IF @@ROWCOUNT = 0
        BREAK
END

Isso gera transações menores. E atenua os problemas de travamento criando espaço para outros processos.

Você também pode pesquisar tabelas particionadas . Eles potencialmente permitem que você limpe as entradas antigas descartando uma partição inteira.