Skip to content

Bits of .NET

Daily micro-tips for C#, SQL, performance, and scalable backend engineering.

  • Asp.Net Core
  • C#
  • SQL
  • JavaScript
  • CSS
  • About
  • ErcanOPAK.com
  • No Access
SQL

Parameter Sniffing — The #1 SQL Server Mystery You Must Understand

- 05.12.25 | 05.12.25 - ErcanOPAK

Parameter sniffing is NOT a bug.
It’s SQL Server being too smart… sometimes.

😈 The Problem

SQL caches a plan for one parameter and reuses it:

EXEC GetOrdersByCustomer @customerId = 1;  -- cached plan
EXEC GetOrdersByCustomer @customerId = 9999; -- wrong plan reused

⚠ Symptoms

  • Extreme slowdowns

  • Terrible cardinality estimates

  • “It’s fast for me but slow for others!”

✔ Fix Options

  • 🟡 Recompile selectively

OPTION (RECOMPILE)
  • 🔵 Use OPTIMIZE FOR UNKNOWN

  • 🟢 Add smarter indexes

  • 🟣 Use table variables (carefully)

💡 Bonus:
SQL 2022 Intelligent Query Processing makes this MUCH better.

Related posts:

SQL — ORDER BY Without Index Causes TempDB Spikes

SQL Server — Scalar UDFs Kill Query Parallelism

SQL SARGability — The REAL Reason Your Indexes Don’t Work

Post Views: 9

Post navigation

Never Use SELECT * in Production — Here’s Why It Destroys Performance
Indexing Superpowers: The 5 Index Types Every Dev Should Know

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

January 2026
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  
« Dec    

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (923)
  • How to add default value for Entity Framework migrations for DateTime and Bool (814)
  • Get the First and Last Word from a String or Sentence in SQL (808)
  • How to select distinct rows in a datatable in C# (784)
  • How to make theater mode the default for Youtube (664)
  • Add Constraint to SQL Table to ensure email contains @ (561)
  • How to enable, disable and check if Service Broker is enabled on a database in SQL Server (544)
  • Average of all values in a column that are not zero in SQL (510)
  • How to use Map Mode for Vertical Scroll Mode in Visual Studio (460)
  • Find numbers with more than two decimal places in SQL (427)

Recent Posts

  • C# Value Types Copied More Than You Think
  • C# Async Void Is Dangerous
  • C# Foreach vs For Performance Difference
  • SQL Deletes Lock Tables
  • SQL Queries Slow Despite Indexes
  • .NET Core APIs Feel Slow Under Load
  • ASP.NET Core Memory Grows Slowly
  • Git Conflicts Keep Reappearing
  • Git Rebase Feels Dangerous
  • Ajax Forms Submit Twice

Most Viewed Posts

  • Get the User Name and Domain Name from an Email Address in SQL (923)
  • How to add default value for Entity Framework migrations for DateTime and Bool (814)
  • Get the First and Last Word from a String or Sentence in SQL (808)
  • How to select distinct rows in a datatable in C# (784)
  • How to make theater mode the default for Youtube (664)

Recent Posts

  • C# Value Types Copied More Than You Think
  • C# Async Void Is Dangerous
  • C# Foreach vs For Performance Difference
  • SQL Deletes Lock Tables
  • SQL Queries Slow Despite Indexes

Social

  • ErcanOPAK.com
  • GoodReads
  • LetterBoxD
  • Linkedin
  • The Blog
  • Twitter
© 2026 Bits of .NET | Built with Xblog Plus free WordPress theme by wpthemespace.com