Parameter-Sniffing = Ein mit Parametrierung = erzwungen. Welches hat Vorrang?

7

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

Matt Evans
quelle
1
Könnten Sie angeben, auf welchen Einstellungsnamen sich der Parameter bezieht, auf den Sie sich beziehen? Mir ist eine solche Einstellung nicht bekannt.
George.Palacios
1
@ George.Palacios Ich habe die Frage bearbeitet, um einen Link aufzunehmen, der diese Option umreißt
Matt Evans
@Zane siehe die Bearbeitung oben. Sollte Links in den Beitrag aufgenommen haben
Matt Evans
Nun ... Es scheint an der Zeit zu sein, einen Test zu erstellen und etwas Neues zu lernen.
Zane

Antworten:

5

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

Wald
quelle
3

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.

Kin Shah
quelle