Latest blog posts

Three reasons RDS SQL Server is better than Azure SQL Managed Instance

By Kendra Little on October 8, 2025

While every managed database service has high points and low points, there are three things that make RDS for SQL Server shine in comparison to Azure SQL Managed Instance: options for a higher memory:vCPU ratio, a well documented API that works beautifully with python, and fast and effective customer support that isn’t painful to use. It’s just three things, but they make a huge difference. And these are three things that Microsoft can, and SHOULD, really fix for their cloud database services.

Continue reading

Why Won't PostgreSQL Use My Covering Index?

By Kendra Little on June 26, 2025

Dear Postgres, Why won’t you use my covering index?

Lately I’ve been learning to tune queries running against PostgreSQL, and it’s pretty delightful. One fun question that I worked through struck me something that most Postgres users probably encounter one way or another: sometimes you may create the perfect index that covers a given query, but the query planner will choose to ignore it and scan the base table.

Why in the world would it do that?

Continue reading

Fixing OPTIMIZATION_REPLAY_FAILED in Query Store: When Plan Forcing Breaks in SQL Server 2022+

By Kendra Little on April 30, 2025

Forcing plans with Query Store can be a powerful tool—until it mysteriously fails. In real production systems, plan forcing sometimes just… doesn’t work. One common culprit is the cryptic OPTIMIZATION_REPLAY_FAILED error.

If you’re hitting OPTIMIZATION_REPLAY_FAILED, try re-forcing the plan using @disable_optimized_plan_forcing=1.

Continue reading

Comparing Single Column, Multi-Column, and Filtered Statistics in SQL Server

By Kendra Little on April 13, 2025

Statistics in SQL Server are simple in theory: they help the optimizer estimate how many rows a query might return. In practice? Things get weird fast. Especially when you start filtering on multiple columns, or wondering why the optimizer thinks millions of rows are coming back when you know it’s more like a few hundred thousand. In this post, I’ll walk through examples using single-column, multi-column, and filtered statistics—and show where estimates go off the rails, when they get back on track, and why that doesn’t always mean you need to update everything with FULLSCAN.

Continue reading

Latest SQLComics

SQL Corgs Explain Inner Joins

on April 15, 2024

Joins are essential. The SQL Corgs introduce you to INNER joins in this animated short.

LOOK HERE

Awkward Unicorn Explains Database Normalization

on April 3, 2024

Why do we “normalize” relational databases, and what are the basics? Awkward Unicorn explains, with a little help from their friends.

LOOK HERE

SQL Basics (SELECT, FROM, WHERE) with Freyja the Corgi

on April 1, 2024

Freyja the corgi shares her tips for learning SQL: SELECT, FROM, and WHERE.

Now that I’m getting the hang of this, I think I’m going to do a whole series of shorts on SQL syntax essentials, plus tips and tricks!

LOOK HERE

Rita the Raccoon Writes SQL

on March 28, 2024

I learned to make short form videos with my drawings this week, and, well… things are about to get weirder.

LOOK HERE