Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

La commande DELETE est trop lente dans une table avec un index clusterisé

Cela peut être lent car une suppression importante génère un journal de transactions volumineux. Essayez de le supprimer par morceaux, comme :

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

Cela génère des transactions plus petites. Et cela atténue les problèmes de verrouillage en créant un répit pour d'autres processus.

Vous pouvez également consulter les tables partitionnées . Ceux-ci vous permettent potentiellement de purger les anciennes entrées en supprimant une partition entière.