The bugs alone are reasons enough to avoid using it, and also to refactor any existing MERGE statements you have in your code base. Those bugs include ones that have performance implications as well as ones that could lead to incorrect results. Long story short, Microsoft refuses to fix several of them, and some of the other major issues are “by design”!
If you still feel the desire to use them, please keep reading, and I hope by the end of this blog you will be convinced that
1. Less statements does not always lead to better code or better performance.
2. MERGE is like a VAMPIRE and once it is in your codebase, it’s just a matter of time before it drains your servers of their lifeblood.
The worst part about the second point is all the sparkling.
The worst part about the first point is that I was really excited with
MERGE came out in 2008, as I wanted
UPSERT for SQL Server. It, uh, didn’t work out so well.