Statistics — Complete Guide
Statistics — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of SQL Server Tutorial on Toolliyo Academy.
On this page
SQL Server Tutorial · Lesson 39 of 100
Statistics
SQL basics ✓ → Queries → Advanced
Queries · 2 — JOINs · ~6 min · SQL — Indexing & Performance
What is this?
Statistics are histograms SQL Server uses to estimate how many rows a predicate returns. Bad estimates → bad plans.
Why should you care?
After bulk loads, stale stats can make the optimizer pick scans instead of seeks.
See it live — copy this example
Run in SQL Server Management Studio (SSMS) or Azure Data Studio.
USE DataVerse;
UPDATE STATISTICS dbo.Orders IX_Orders_CustomerId WITH FULLSCAN;
DBCC SHOW_STATISTICS (N'dbo.Orders', N'IX_Orders_CustomerId');
SELECT name, auto_created, user_created, last_updated
FROM sys.stats s
CROSS APPLY sys.dm_db_stats_properties(s.object_id, s.stats_id) p
WHERE s.object_id = OBJECT_ID(N'dbo.Orders');
What happened?
- UPDATE STATISTICS refreshes the histogram.
- SHOW_STATISTICS displays density and steps.
- dm_db_stats_properties shows last_updated times.
Practice next
- Update stats on Orders with FULLSCAN in lab.
- Run SHOW_STATISTICS and skim the histogram.
- Check last_updated for all stats on Orders.
- CREATE STATISTICS on (City, Status) manually.
- Compare estimated vs actual rows in a plan.
Remember
Stats drive cardinality estimates. Refresh after big data changes. Auto stats help; heavy ETL may need manual updates.
Post-ETL stats job
Nightly DataVerse load finishes then updates stats on fact tables.
Outcome: Morning reports pick sensible plans.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!