sql >> Base de Datos >  >> RDS >> Sqlserver

El comando DELETE es demasiado lento en una tabla con índice agrupado

Puede ser lento porque una eliminación grande genera un registro de transacciones grande. Intenta eliminarlo en partes, como:

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

Esto genera transacciones más pequeñas. Y mitiga los problemas de bloqueo al crear un respiro para otros procesos.

También puede buscar en tablas particionadas . Estos potencialmente le permiten purgar las entradas antiguas eliminando una partición completa.