Hi Kris,
not sure on what database type you are. But my recent experience with an Oracle database are, that during mass deletion, also the INDEX is checked again and again - since the database seems not to be aware that a full table scan will not be part of the performance of executing the statement. On an Oracle database this can be avoided using %HINT and a reference to FULL_INDEX. << I will check the correct ABAP syntax tomorrow >>
Some segmentation like Thomas Zloch was already stating is also a very good idea. It looks like a big lost in performance - moving data from database server to application server and back - but it's a winner for real...
Best,
Sander