I'm not sure you're telling the whole story... if the 800 million rows is a staging table, of sorts, why not just add a "present" column to it and update it with a simple join to the big table? That would give you the rows that are in and not in the big table... that'll certainly make doing the MERGE I think you may be tring to do a bit easier.