Delete data from a billion row table based on where clause
Figured a better way to do this


Insert into new_tbl select * from old_tbl where start_date &lt; now -INTERVAL '2 years'
During downtime window:  

insert into new_tbl select * from old_tbl where id not in (select id from new_tbl ) and id not in ( select id from old_tbl)

Rename old_tbl to old_tbl_drop and new_tbl to old_tbl.
Drop old_tbl_drop.