In the past years, several people have suggested that I should make videos to help people get a better understand of execution plans. I’ve always shied away from the idea. Creating video content, or rather, creating top notch quality video content, takes a lot of time. Would it not make more sense to create more content for other channels?
On the other hand, a lot of people learn more from live training, or from video training (the closest alternative), than from reading blogs or articles. And my goal is to educate as many people as possible. It’s impossible for me to do live training all over the world. But I can make videos. Videos that everyone can get access to. That people can watch when they have time. That they can watch at faster or slower speed, that they can pause, rewind, return to later.
Let’s do this!
Last year, when yet another trusted friend told me that I really should consider making training videos, I decided to take the plunge. But I also decided that if I’m going to do this, I’m going to do it thoroughly.
So I started planning the course structure. Writing text. Creating slides. Designing demos. Recording. Editing. Modifying things I was unhappy about. Adding captions.
And, from time to time, cursing the day I decided to start this project. Cursing the people who convinced me to do this. (Yes, you know who you are!)
As those who have been to my full-day precon on execution plans know, I believe that learning to understand execution plans does not start with dozens of examples. It starts with an explanation of the basics, followed by an overview of operators. Just like learning Russian doesn’t start with reading Tolstoy’s Война и мир (War and Peace), but with learning the grammar rules and the vocabulary.
Once you know the grammar of a language, and enough of its vocabulary, you can then pick up any book. And the more you do that, the easier it becomes. Eventually, one day, you will be able to read Война и мир in its original language.
And once you know the basics of reading execution plans, and are familiar with most of the operators, you will be able to tackle any execution plan you find on your servers, no matter how complex.
My ideas about the best way to learn execution plans have shaped the structure of the course. The total course will consist of seven blocks, each block focusing on its own content. In recommended viewing order, these blocks are:
- Understanding execution plans. This is where I show the generic rules of execution plans. Similar to the grammar rules of a language (except the generic rules of execution plans are much, much simpler than the grammar of any language I know.
- Reading data. This block will focus on operators that read data, from tables or from indexes. Scans, seeks, lookups. And a few special cases.
- Combining data. If an execution plan reads data from multiple sources, then these operators are the ones that bring the streams together. Most of this block will focus on the four join operators, but a few other operators will feature as well.
- Operators for sorting and grouping. This obviously includes the Sort operator and the multiple operators for aggregation, but segmenting will also be covered.
- Operators that manipulate data: Top, Filter, Compute Scalar, Sequence Project. All of these appear simple. Yet, they all have their own peculiarities.
- Technical operators. A term that I made up to cover the broad category of operators that are targeted towards enabling or optimizing other operators, rather than towards actually themselves working on the data stream. This includes spools, parallelism, bitmaps, and quite a few other operators.
- Operators related to data modification. This obviously starts with all the various operators for inserting, updating, deleting, or merging data in a table or index. But I will also cover various strategies for optimizing index maintenance, look at constraint checking, and a few things more.
Within each block, I will further divide the content across the basic level (intended to be useful for everyone, from someone who just saw their first execution plan to a professional with a few years of experience; the latter will of course already be familiar with most of the content, but should still pick up new information); and the advanced level (intended for those who finished the basic level and want to expand their knowledge further, or for the hardened query tuner who believes they can skip the basic level).
And within each block, there will be from three to six chapters: videos of between 10 and 30 minutes each. Each chapter introduces new material, new knowledge. I will not only explain the information, I will also show examples of how it can be used in practice. The examples will become more complex and more realistic as the course progresses, because I can build on knowledge from earlier chapters.
With seven blocks, each divided into two levels, and three to six videos of 10 to 30 minutes per level, this should be the longest, most extensive, most complete video training on execution plans ever made. Based on my current, tentative, planning, the total running length of the entire course will be nineteen hours.
Change of plans
My original plan was to create the entire course, or at least most of it, before publishing this project. I didn’t want to announce a project of this magnitude and then make only a tiny fraction available and have everyone wait for the rest.
But right now, at this time in history, the world is in an unprecedented situation. Due to Covid-19, most of the countries have declared lockdowns, in some form or way. Many people right now are forced to stay home. They have more time on their hands than normal. This is the time for them to invest that time into their own career. Perhaps you are already working with SQL Server but want to get better at tuning those slow queries? Perhaps your current career is endangered and you want to switch to SQL Server?
I made a judgement call. I decided, with so many people unable to work, forced to stay home, looking for ways to make good use of their time, I should try to publish what I have. It may not be much, but it’s more than nothing, right? So I spent the last few days working extra hard to finish the last chapters of the first level. And right now, the basic level of block 1 is finished, published, and available for viewing.
This does of course mean that you’ll have to wait for the rest after finishing this level. It also means that most of what I wrote above is still subject to change. As I continue to create more chapters, I might decide to change the seven planned blocks (unlikely, but not impossible). I might discover that some levels need more than six chapters, or less than three chapters (likely). And I will almost certainly discover that every single chapter will be either shorter or longer than the currently projected length. After all, the length in my planning is an estimate, not a target. The target is to use whatever length is needed to properly cover the material.
Free? Yes, free!
And finally, some good news. We can use good news in these worrying times.
I understand that the Covid-19 situation puts many of you in financial worries. Perhaps you have no income due to the lockdown. Perhaps you lost your job. Perhaps that’s exactly why you need this course, to increase your chances of getting a job.
I understand this, and I want to help. That’s why, at least for the duration of the world wide Covid-19 crisis, access to the execution plan video training will be completely free!
And here, then, is my plea. If you watch these videos, tell me what you think. Did you like them? Hate them? Why? What can I do to improve? Am I wasting my time going forward with this project, or are you already eagerly awaiting the next release?
Tell me. Let me know. You can comment here, or you can comment on my videos. Or you can mail me your thoughts directly.