Plansplaining, part 18. Temporal tables (part 3)

Welcome to part eighteen of the plansplaining series. Like the previous posts, this one too focuses on temporal tables and their effect on the execution plan. After looking at data modifications in temporal tables and at querying with a most basic temporal form of temporal query, let’s look at the more advanced variations for temporal querying. We’re still looking at getting data from a single query only in this post. We’ll look at joins in the next post. Sample tables For the code samples in this post, I keep building on the demo tables and sample data from the previous…
Read More

Recorded session: Debugging without debugger

Yesterday I presented a session for the virtual conference SQLDay, organized by our friends from the Polish SQL Server User Group (PLSSUG). An amazing conference that has chosen to use an interesting platform to try to recreate the in-person conference feeling while still being Covid-safe from behind your screen. However, an experimental new platform does come with challenges. During my presentation, my shared screen froze. After spending a few minutes trying to fix the issue I finally had to leave the application completely, then restart it. After that, the rest of the session delivery went fine. But the interruptions and…
Read More

T-SQL Tuesday #138 – Keeping up with change

It’s May 2021, it’s Tuesday; that means it’s time for T-SQL Tuesday, the monthly blog party for all SQL Server and Data Platform bloggers. This month is hosted by Andy Leonard (b|t). Andy invites us to share our thoughts on how we deal with technology changing as we are working on our projects. As an example, he mentions how, just after the release of his book on building custom SSIS tasks, he ran into things that had changed and had to publish an errata list. My experience Andy’s example hit home for me, because I regularly run into similar situations.…
Read More

How a row goal affects estimates

Most of our queries are intended to process a complete data set. But not all. There are cases where we restrict the number of rows. Or cases where SQL Server does this. In all such cases, and a few others, the query optimizer uses a mechanism called a “row goal” to ensure that the execution plan is optimized for a subset of the total result set, not all of it. Some examples Without trying to be complete, let’s list a few cases where a row goal would be set. Literal row limitation in the query The most simple is when…
Read More

Execution plans – learning opportunities

Most people know they have to invest in themselves, so that they can get better at their job. And if that job involves query performance on SQL Server, then part of that investment should definitely go towards execution plans. I happen to teach about execution plans. A lot. And there are a few opportunities in the near future that I want to make sure you are aware of. (If you are allergic to self-promotion, you might want to skip this post!) The basics Perhaps you are here because you have heard that execution plans are an important tool for query…
Read More

Execution Plan Video Training – Announcing the next block

It’s time! Time to formally announce the release date for the next block of videos for the SQLServerFast Execution Plan Video Training. The basic level of block 2, Reading data, will go live on May 15. What to expect? Block 2 of the SQLServerFast Execution Plan Video Training covers everything involved with reading data. The basic level, consisting of five videos (“chapter”) of 25 to 40 minutes each, focuses on what many people still see as the standard for SQL Server: disk-based rowstore indexes and heaps. The first chapter of the block gives a detailed overview of how this type…
Read More

T-SQL Tuesday #137 – Use notebooks every day? No way!

As you probably know, T-SQL Tuesday is a monthly event where bloggers are invited to write about a set topic. Our host for April 2021 is Steve Jones (b|t) this time, and he has asked us to write about Jupyter notebooks: do we use them, would we want to; and why or why not? The basics Let’s start with the basics, because I’m not convinced that everyone reading this already knows what Jupyter notebooks are. Simply put, a notebook is a single file where you can store a combination of blocks with formatted text and blocks with code, where the…
Read More

Plansplaining, part 17. Temporal tables (part 2)

Welcome to part seventeen of the plansplaining series, where I will continue my look at how temporal tables affect execution plans. The previous post focused on data modifications in temporal tables. Now let’s see what happens if we use temporal logic to our basic retrieval queries. This post focuses on the basics only; do keep in mind that as soon as you want to join data from multiple temporal queries you will run into some specific issues that you need to be aware of; this will be the subject for a later post. Sample tables For the code samples in…
Read More

T-SQL Tuesday #136 – Float does NOT suck!

Another month has passed; time for another T-SQL Tuesday post. The monthly blog party is hosted by Brent Ozar (b|t) this time. And he wants us to write about our favourite (or least favourite) data type. I don’t really have a data type I like. I also don’t hate data types. The thing I do hate is when the wrong data type is used for the purpose. So instead of doing what Brent asks, I will write a short post about a very common misconception about a data type that triggers me whenever I read it. Which happens a lot.…
Read More

Plansplaining, part 16. Temporal tables (part 1)

5 Comments
Welcome to part sixteen of the plansplaining series. The first of a few posts about how temporal tables affect execution plans. In this post, I’ll build on the last four posts on data modifications, building on the more generic discussion of data modification in the previous four posts. Later posts will look at data retrieval and some specific scenarios. If you have never heard of temporal tables, I suggest reading Louis Davidson’s five part series about this feature. It seems some of the formatting has been lost in time, but the content is still good and valid. Part 1 Part…
Read More

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