This is my first time to attend the PASS Summit. I was very excited about it, and I planned to learn a lot and to meet a lot of interesting people. The summit actually begins tomorrow evening (October 15th) with the welcome reception, and then there are 3 days of professional sessions – Wednesday through Friday. But there are also pre-conference sessions, which span a whole day, and I couldn't resist the opportunity to attend such a session with Paul White (Blog | Twitter).
So I registered and attended this session today. The title of the session was Understanding the Optimizer and Interpreting Execution Plans. This was a 500-level session, and I it was awesome! No, it was amazing! No, it was fantastic!
I thought I knew quite a bit about how the optimizer works and about execution plans, but Paul made me realize how much I didn't know. I learned so many things today. It's like the first class in university when you feel that you've just covered everything you learned in high school in 3 years. That's how I felt after only one hour with Paul White.
He started the session with a debugger attached to the SQL Server service, and he demonstrated what exactly is happening behind the scenes when a statement is executed. This was mind blowing, and it was only the beginning!
I won't write about all the things I learned today, because there are just too many of them, and I still need to organize things in my mind. But I do want to share with you the one thing I learned, which I find it to be the most important. Most of us (including myself) are used to read execution plans from right to left. Cause this is the order of execution, right? First, you scan the table, then you count the rows and finally you produce the output, right? Well, I learned today that right-to-left is not the order of execution. It's the direction of the data flow, but the order of execution is actually from left to right. First, you ask for the number of rows, then the "Select" operator asks for a row from the "Aggregate" operator, which in turn asks for rows from the "Table Scan" operator. When you read the execution plan this way, suddenly many things start to make sense. I encountered several execution plans in my career that I couldn't understand or explain their behavior. I have spent a lot of time trying to figure it out. Now, it suddenly makes sense. All of them become so simple to explain once you understand the flow of execution.
The best way to interpret execution plans is to combine both methods. Read the plan from right to left to understand how data flows, and read it from left to right to understand how execution flows. The combination of both techniques is a very powerful tool. Thank you so much, Paul!
Another awesome thing about the PASS Summit is that I get to meet very interesting people, such as Kendal Van Dyke (Blog | Twitter) and Brent Ozar (Blog | Twitter). Both Kendal and Brent were sitting next to me in Paul's class. It's like sitting next to Madonna and Mick Jagger while listening to music together…
At the end of the day there was a nice "networking dinner" in one of the local restaurants, where I had the chance to meet a few SQL Server professionals from around the world.
So my first day in PASS Summit 2013 was awesome!
Tomorrow I have a few meetings during the day, and then the welcome reception.
See you tomorrow…