Ich habe einen tatsächlichen Abfrageplan für eine bestimmte Abfrage erfasst.
Danach habe ich einige Dinge geändert (einschließlich der Aktualisierung der Statistiken) und diese spezielle Abfrage erneut ausgeführt. Jetzt ist der eigentliche Abfrageplan anders (was Sinn macht).
Die Abfrage läuft jetzt viel schneller. Ich bin gespannt, ob der neue Ausführungsplan etwas damit zu tun hat, da andere Änderungen (Änderungen am E / A-Setup, VM-Einstellungen, Neustart der SQL-Instanz usw.) ebenfalls zu einer Leistungsverbesserung führen können. Um dies zu testen, möchte ich die Abfrage erneut ausführen und versuchen, SQL Server zu zwingen, den alten Ausführungsplan zu verwenden.
Frage : Gibt es eine Möglichkeit, eine Abfrage mit einem vom Benutzer bereitgestellten Ausführungsplan erneut auszuführen oder sogar eine Abfrage direkt aus einem solchen Plan auszuführen?
Folgendes habe ich versucht, um dies herauszufinden:
- Ich habe in den Büchern gesucht, die wir im Büro zur Verfügung haben ( Professional SQL Server 2012-Interna und Fehlerbehebung , Abfragen von Microsoft SQL Server 2012 ).
- Google-Suchanfragen, z. B. "Abfrage basierend auf einem bestimmten Abfrageplan ausführen"
- DBA.SE sucht beispielsweise nach "Abfrageplan ausführen" und "Ausführungsplan erneut ausführen".
- Und schließlich eine, die meine Fragen schon oft beantwortet hat: Überprüfen Sie sorgfältig "Fragen, die möglicherweise bereits beantwortet wurden", bevor Sie auf "Frage posten" klicken :-)
Fazit: Ist das möglich? Wenn das so ist, wie?
Antworten:
Ja.
Du brauchst den
USE PLAN
Hinweis.In dem liefern Sie die
XML
aus dem ersten Plan.Dies garantiert zwar nicht, dass der Plan genau derselbe ist (z. B. können sich beispielsweise skalare Operatoren bewegen), ist aber wahrscheinlich ziemlich nah.
quelle