Files
jr-sql-ai/prompts/sniffing_stats_playbook.md

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")

  1. Query rewrite (SARGability, Splitting optional filters)
  2. OPTION(RECOMPILE) selektiv
  3. OPTIMIZE FOR (oder OPTIMIZE FOR UNKNOWN) bewusst
  4. Zwei Queries / IF branches für stark unterschiedliche Pfade
  5. Plan guides / forced plan (nur in Ausnahmefällen)
  6. 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---