• In general, when I have a lot of rows to delete, I do it in a loop with a "wait". The advantages for me are:

    Small chunks so I can see it progress.

    Does not hog the system completely

    Can be stopped & restarted without starting over

    It may not be the fastest method, but in my case I needed to run it on a production server with minimal impact on others. Experiment with delay time & delete size

    basically i set it up like this:

    DeleteMore:

    waitfor delay 5 seconds (to give others some cpu)

    delete top 10000 from tableA where ......

    if @@rowcount > 0 goto DeleteMore