You have learned the relevance of execution plans. You know where to find them, and you’ve been taught the basics of how to read them. You’ve looked at some of the clean, simple execution plans that presenters used in classroom training, or at conferences, and you feel confident that you can work with them. And then you get your first problem query at your workplace, you look at its execution plan, and you just want to crawl under a rock and cry.
Real code is much more complicated than demo code. Real code translates to large, complex, and often messy execution plans. The principles of reading execution plans still apply, but the plan is large and messy and you struggle where to even begin.
If your query uses a lot of I/O, then which operators are to blame? If your query uses a lot of memory, then what area is responsible? What are some things you should always look at?
Knowing the root cause of a problem can help find a cure. Knowing where to look in a large execution plan can help you find that root cause faster!