Analyzequery
Home Statistics and Cardinality Estimation The Art of the Guess: How Databases Use Statistics to Speed Up
Statistics and Cardinality Estimation

The Art of the Guess: How Databases Use Statistics to Speed Up

By Aris Varma Jun 5, 2026

Imagine you’re a librarian and someone asks for every book about dogs written in 1994. You have a few choices. You could walk through every single aisle (a 'table scan'), or you could look at the index at the back of a few specific books. But how do you know which way is faster? You’d probably use your gut feeling based on how many books you know are in the dog section. Databases do the exact same thing, but instead of 'gut feelings,' they use high-level math called Cardinality Estimation.

This is a major part of Relational Query Optimization Mechanics. The database keeps a 'diary' of sorts—we call them statistics—about what’s inside its tables. It knows roughly how many rows there are and how many unique values exist in each column. When a query comes in, the 'optimizer' looks at these stats to guess how much work it's about to do. If the stats are wrong, the database might choose a path that’s way too slow. It’s like trying to drive to a new city with a map from ten years ago; you’re going to run into some surprises.

What changed

Old Way (Rule-Based)New Way (Cost-Based)
Followed fixed 'if-then' rules.Estimates the 'cost' of every path.
Didn't care how much data there was.Uses data size to pick the best tool.
Same plan every single time.Plans change as the data grows.

The Power of the Index

To make things faster, we use 'indexes.' You can think of an index like the 'FastPass' at a theme park. There are a few different types that the optimizer can choose from. The most common is theB-tree index. It’s a balanced tree structure that lets the database find a specific value by making just a few 'turns' through a map. If you're looking for a range of dates, B-trees are the gold standard. Then you haveHash indexes, which are lightning-fast for looking up one specific thing (like a user ID) but useless for ranges. Finally, there areBitmap indexes. These are used for columns that don't have many options—like 'Yes' or 'No.' By using these shortcuts, the database avoids reading every single row, which saves a massive amount of time.

Pushing Down the Work

One of the coolest tricks an optimizer has is called 'Predicate Pushdown.' A 'predicate' is just a fancy word for a filter, like 'where price is less than 10 dollars.' In the old days, a database might grab *all* the products first and then filter out the expensive ones. That’s a waste! Modern optimizers 'push' that filter down as far as possible. They try to discard the data they don't need at the very first step. Why carry a whole bag of groceries home if you only want the apples? You leave the rest at the store. This keeps the 'intermediate result sets' small, which is the secret to a snappy database.

When the Math Fails

So, what happens when a database gets it wrong? This usually happens because the statistics are 'stale.' If you suddenly add a million new customers but don't tell the database, its old 'diary' entries won't match the reality of the tables. It might think a table is small and try to use aNested Loop Join, only to get stuck in a loop that takes forever. This is why database pros spend so much time on 'statistical estimator accuracy.' They want to make sure the database's mental model of the world matches the actual bits on the disk. Have you ever wondered why an app that was fast yesterday is suddenly crawling today? Stale stats might be the culprit.

The Final Plan

All this work leads to a 'Query Execution Plan.' This is a tree-like chart that shows every step the database will take. It shows which index it will use, which join algorithm it picked, and how many rows it expects to find at each stage. Experts can look at these plans to spot 'bottlenecks'—places where the database is working harder than it needs to. It’s a blend of high-level math and detective work that ensures our digital world stays fast and efficient.

#Database statistics# B-tree index# cardinality estimation# predicate pushdown# hash index
Aris Varma

Aris Varma

Aris is a Contributor focused on the accuracy of statistical estimators and their impact on query graph analysis. He frequently audits how different database engines handle complex subqueries and the resulting execution plan variances.

View all articles →

Related Articles

A Few Lessons on Flow and Finding the Best Path Execution Plan Analysis and Visualization All rights reserved to analyzequery.com

A Few Lessons on Flow and Finding the Best Path

Siobhán O'Malley - Jun 8, 2026
The Art of the Join: Why Your Database Loves Shortcuts Statistics and Cardinality Estimation All rights reserved to analyzequery.com

The Art of the Join: Why Your Database Loves Shortcuts

Mara Vance - Jun 8, 2026
The Invisible Brain Inside Your Database: How Query Optimization Works Join Ordering and Execution Algorithms All rights reserved to analyzequery.com

The Invisible Brain Inside Your Database: How Query Optimization Works

Siobhán O'Malley - Jun 8, 2026
Analyzequery