• The (IMHO) much easier to understand (and code) method is by using WHERE NOT EXISTS() which pretty much circumvents all three issues. Ironically it usually ends up with the same query plan anyway. Or, (as is the case here!) sometimes even comes up with a better one. But most of all, I think it is a lot easier to read which (on the long run) makes it a more favourable option to me.

    I agree that using WHERE NOT EXISTS is easier to read, the purpose of the article was to show how to get the results using the outer join. But I do agree that I could have shown other solutions and it would have made the article better.