![Exclamation :!:](./images/smilies/icon_exclaim.gif)
Use a hashed file. They are the heart and soul of Server jobs, so leverage them. And before you ask - no, there's absolutely no reason to put all 20M source records in it first. Put only what you need there for each run. Load the keys from your source file into a work table and use that to constrain your build sql for the hashed file.