Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Il comando DELETE è troppo lento in una tabella con indice cluster

Potrebbe essere lento perché un'eliminazione di grandi dimensioni genera un registro delle transazioni di grandi dimensioni. Prova a eliminarlo in blocchi, come:

WHILE 1 = 1
BEGIN
    DELETE TOP (256) FROM FTPLog WHERE FTPLogId <= @MaxFTPLogId
    IF @@ROWCOUNT = 0
        BREAK
END

Questo genera transazioni più piccole. E riduce i problemi di blocco creando spazio per altri processi.

Potresti anche esaminare le tabelle partizionate . Questi potenzialmente ti consentono di eliminare le vecchie voci eliminando un'intera partizione.