Diese beiden Einstellungen scheinen sich zu widersprechen. Man erzwingt die Planparametrierung, sodass nur ein Plan erstellt wird. Der andere ermöglicht mehrere Pläne
Wenn Sie Parametrisierung = erzwungen haben, sollte das Parameter-Sniffing falsch sein oder hat man Vorrang?
Zusätzliche Details
In Bezug auf die folgenden Kommentare ist das Parameter-Sniffing ab SS 2016 eine Option mit Datenbankbereich (war auch für mich eine Überraschung). Siehe auch: SQLShack: SQL Server 2016-Parameter-Sniffing
sql-server
sql-server-2017
parameter-sniffing
Matt Evans
quelle
quelle
Antworten:
Diese widersprechen sich nicht. Parameter-Sniffing ist der Prozess, bei dem beim Erstellen eines Plans die Parameterwerte verwendet werden. Durch erzwungene Parametrisierung werden Literale in Abfragen zu Parametern.
Wenn beide aktiviert sind, werden Literale in Parameter umgewandelt, diese Werte werden jedoch bei der Schätzung der Kardinalität nicht verwendet.
Mehr zum Parameter-Sniffing
Mehr zur erzwungenen Parametrierung
quelle
Parametrisierung und Schnüffeln sind getrennte Aktivitäten. Eine Ad-hoc-Anweisung kann von SQL Server parametrisiert werden, ohne dass Parameterwerte abgehört werden.
Paul White hat einen ausgezeichneten Blog-Beitrag über: Parameter-Sniffing, Einbetten und die RECOMPILE-Optionen, der sowohl Parameter-Sniffing als auch Parametrisierung anhand von Beispielen ausführlich behandelt.
quelle