Of course, your mileage will vary -- This will depend on how many real records you are scraping off the bottom of this table, but here's an alternative.
Side Note: Since you have a "Date_Added" field, would it be worth considering to simply keep the datetime of the last run and use that in your where clause to filter the records to be removed? Now, instead of 20,000 records, allow X number of days in the log ... Just a thought...
-- Get the records we want to KEEP into a temp.
-- You can classify the keepers however you wish.
select top 20000 * into #myTempTable from MyTable ORDER BY DateAdded DESC
-- Using truncate doesn't trash our log file and uses fewer sys resources...
truncate table MyTable
-- Bring our 'kept' records back into the fold ...
-- This assumes that you are NOT using an identity column -- if you are, you should
-- specify the field names instead of using the '*' and do something like
-- SET IDENTITY_INSERT MyTable ON
-- insert into MyTable select field1,field2,field3 from #myTempTable
-- (I think that's right)
insert into MyTable select * from #myTempTable
-- be a good citizen.
drop table #myTempTable
Hope it helps --