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.