Redundant indexes cost space and slow every write, but not every one can go. This post measures an index on Col1, Col2 next to an index on Col1, Col2, Col3 on SQL Server 2025: size, plan, reads and log bytes. It ends with a safe way to remove one.
Uneven Parallelism: Spotting Skewed Threads Behind CXPACKET Waits
Diagnose uneven parallelism by comparing CXPACKET and CXCONSUMER with per-thread row counts in plans and live query profiles.
INNER HASH JOIN: Why a Table Join Hint Also Fixes Join Order
A join hint in the FROM clause quietly fixes the join order. I show the warning, three plans side by side, and the softer query-level alternative.
Exchange Spill: When Parallel Streams Write to tempdb
Tempdb writes during a parallel query, with no sort warning in sight? Here is a demo that spills every time, and how to find the operator.
SQL SERVER – Video – Beginning Performance Tuning with SQL Server Execution Plan
Performance tuning is a long journey, and the Execution Plan is its map. A video on how to begin tuning queries with SQL Server execution plans.
CTE Referenced Twice: Why the Query Runs It Twice
Writing a CTE name two times can mean doing the work two times. Two small demos show when a temp table helps and when it only adds cost.
Plan Cache Key Lookups: Finding the Worst Ones With XQuery
Not every key lookup needs fixing. Rank statements by reads, find the lookups with XQuery, then test the smallest index change on one call.







