One of the more common questions I get from colleagues is on how to read the execution plan that SQL produces. At first I found it quite a hard question to answer as no one really taught me how to read them. When I started with performance tuning I got a bit thrown in the deep end.
This is going to be the first in a series, maybe short, maybe long, on reading SQL’s execution plans. I’m going to go into the overall structure of a plan; the differences between the actual and the estimated plans, and how to obtain both; and some of the more common query operators and how they affect query performance.
If you have any specific questions that you’d like answering regarding execution plans, please post a comment here. Otherwise I’m going to ramble on a bit touching on things that I feel are important and relevant and maybe missing things that you would like to know.
Current articles in this series, in order of writing, are
- Structure of an execution plan
- Execution plans, estimated vs actual
- Execution plans from Profiler
- A basic execution plan
- Execution plan operations – scans and seeks
- Execution plan operations – joins
- Execution plan operations – aggregate
- Execution plan operations – misc
- Execution plans – important properties
- Execution plan – more properties
- An example execution plan
There is more to come.