Posts

Storage structures 6 – JSON indexes

It’s time to continue the series on internals of storage structures. I already covered the more standard storage types in the parts about on-disk rowstore, columnstore indexes, memory-optimized storage, and memory-optimized columnstores, and in the last episode of this series I started to cover specialized storage structures by looking at XML indexes. Microsoft introduced limited JSON support in SQL Server 2016. However, it took until SQL Server 2025 before the native json data type and JSON indexes were introduced. So let’s look at how these work under the cover. I have so far not played with JSON data. So I…

Slow progress is better than no progress

(Warning: This blog post is non-technical but purely personal. In my leukemia diary, I write openly about my current health issues. This blog might be triggering for people who struggle with, or lost dear ones to, cancer and other similar diseases.) It’s now almost three weeks since my last update. I finished the seven days of a daily trip to Amsterdam for the azacitidine shot, then continued to take the daily venetoclax pill, as instructed. Plus of course all my various other pills, that I probably never even mentioned here. They have become a kind of routine by now. And…

Vimeo messed up, and you and I get the consequences

EDIT 1: I have confirmed receipt of all mails about owned blocks and levels. If you did not receive a confirmation, then please use the contact form to reach out to me. EDIT 2: It took some time, but eventually Vimeo Customer Support managed to get my account restored, get the videos online again, and sent me instructions how to repair the embed links on the video pages. All videos should be available for purchase and/or viewing again. I am furious right now. Vimeo has made a mistake, and as a result, the SQLServerFast Execution Plan Video Training is currently…

T-SQL Tuesday 200 – Query red flags

When Adam Machanic started T-SQL Tuesday, I bet that nobody, least of all himself, expected it to run for over ten years. Yet, here we are. Not ten, but over 16 years later. Or 200 months, to be exact. This anniversary edition is hosted by Brent Ozar. And his chose topic is: query red flags. Things that make you groan when you open a query and see them in the code. I’m sure there will be a ton of posts, because there are so many. I myself could probably fill a book with things I consider a red flag (and…

Plansplaining part 34 – XML indexes revisited

Welcome back to my plansplaining blog series, where I dive deep into the details of non-obvious execution plans. This part is also a sort of follow up on my post from two weeks ago, when I wrote about the structure and usage of XML indexes, and had to admit that I had not been able to come up with good use cases for all types of secondary XML index. That very same day, I received an email from Mikael (Micke) Eriksson, who pointed me to this question and answer on Stack Exchange for Database Administrators. I then modified that example…

Change is the only constant

(Warning: This blog post is non-technical but purely personal. In my leukemia diary, I write openly about my current health issues. This blog might be triggering for people who struggle with, or lost dear ones to, cancer and other similar diseases.) Last week, my near future was clear. I would go through the official entry tests for the CAR-T trial. Hopefully, I would pass them all, and then start on that trial. Or, if not, I would fall back to the alternative approach of azacitidine combined with venetoclax, AZA-VEN. And then things changed. Again. June 22 In the morning of…

Another crazy week

(Warning: This blog post is non-technical but purely personal. In my leukemia diary, I write openly about my current health issues. This blog might be triggering for people who struggle with, or lost dear ones to, cancer and other similar diseases.) It’s exactly a month after my last leukemia diary entry. Not much happened for most of that time. And then a lot happened. May 18 until June 3 Yes, I know that this entry starts even before my last diary entry, which was May 19. Deal with it. During this period, originally planned for two weeks, but then extended…

Storage structures 5 – XML indexes

After covering on-disk rowstore, columnstore indexes, memory-optimized storage, and memory-optimized columnstores, it is now time to turn our attention to storage structures that are used for specific datatypes only. The first “victim” will be the XML index. When you need to store XML data in a SQL Server database, you can choose between two data types, each with their pros and cons. You can choose to store the XML data as nvarchar(max). This preserves the exact content of the XML as you received it, which might be required for legal reasons. However, any query that cares about the specific content…

Video training update 2026

During the past months, in between working on new videos, I have also made various updates to existing videos in the SQLServerFast Execution Plan Video Training. Since I pushed two really big updates (over half an hour of added content!) live today, I decided that now is a good time to let everyone know what I changed. But let’s first address a few questions you might have. Questions and answers How does this affect the prices? Many of the changes are small, as you will see in the overview below. However, two videos have been extended with a significant amount…

Optional Parameter Plan Optimization

It’s time to finish the triptych on bad parameter sniffing, and how Microsoft tries (and fails) to fix this for you. After first talking about bad parameter sniffing in general, I used my last video to explain Parameter Sensitive Plan Optimization, the feature that Microsoft released in SQL Server 2022 as an attempt to fix one of the three root causes for bad parameter sniffing. If you want to see why I consider that a failed attempt, go watch that video. In SQL Server 2025, Microsoft then added Optional Parameter Plan Optimization (OPPO). Their attempt to fix the second of…

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close