1018 B
1018 B
Parameter Sniffing & Statistics Playbook
Symptome
- Laufzeit stark schwankend je nach Parameter
- Plan ist "gut" für einen Wert, "schlecht" für andere
- Große Estimated vs Actual Abweichungen
- Memory grants/spills je nach Parameter
Diagnose (ohne DB-Zugriff: theoretisch/plan-basiert)
- Welche Prädikate sind parameterabhängig?
- Gibt es Skew (ein Wert sehr häufig/selten)?
- OR-Logik / optional filters (@p IS NULL OR col=@p)?
- Implizite Konvertierungen?
Gegenmaßnahmen (geordnet von "leicht" zu "hart")
- Query rewrite (SARGability, Splitting optional filters)
- OPTION(RECOMPILE) selektiv
- OPTIMIZE FOR (oder OPTIMIZE FOR UNKNOWN) bewusst
- Zwei Queries / IF branches für stark unterschiedliche Pfade
- Plan guides / forced plan (nur in Ausnahmefällen)
- Stats: update + ggf. filtered stats (wenn passend)
Checkliste
- Welche Parameter-Sets testen (min/max/typisch)
- Regression: CPU/Reads/Duration
- Concurrency/Blocking beachten
---BEGIN INPUT--- ---END INPUT---