use a batch DELETE, e.g. something like
DECLARE @batchSize INT
SET @batchSize = 10000
WHILE (SELECT COUNT(*) FROM yourTable WHERE yourCondition) > 0
BEGIN
DELETE FROM yourTable
WHERE primaryKey IN ( SELECT TOP ( @batchSize )
primaryKey
FROM yourTable
WHERE yourCondition ) ;
END ;
of course using EXISTS is faster:WHILE EXISTS(SELECT * FROM yourTable WHERE yourCondition)
No comments:
Post a Comment