Ich habe eine dynamische Teil von SQL. Es dauert ungefähr 4 Minuten zu laufen. Wenn ich stattdessen die Ausgabe der SQL-Anweisung nehme und diese stattdessen ausführe, dauert es etwa 20 Sekunden. Warum die Diskrepanz? Ich weiß, dass es einige Zeit dauern würde, das SQL in der dynamischen Version aufzubauen, aber ich kann mir nicht vorstellen, dass es so teuer ist.Dynamisches SQL dauert viel viel länger als das hartkodierte Äquivalent
Wer hat irgendwelche Ideen? Die zwei Abfragen sollten identisch sein, also vermutete ich, dass es etwas seltsames beim Caching von Abfrageplänen war, aber ich habe nicht wirklich eine Idee.
Bearbeiten: Um zu verdeutlichen, was ich meine, indem Sie die Ausgabe.
In der dynamischen SQL die letzte Zeile ist
EXEC sp_executesql @myQuery,
N'@var1 INT,
@var2 INT,
@var2 INT',
@var1,
@var2,
@var3
ich den Wert von myQuery nahm und steckte es in seine eigene SQL-Datei. Das dauert 20 Sekunden, während das dynamische Ausführen 4 Minuten dauert.
Bearbeiten 2 Ich entfernte die Parameter. Ich habe interessante Ergebnisse bekommen. Die dynamische SQL-Anweisung hat eine Leistungsverbesserung erfahren. Die hardcoded Version sah einen enormen Leistungseinbruch. Die beiden sind jetzt ungefähr gleich.
Bitte geben Sie Ihren Code ein. – Taryn
Können Sie Ihren Code anzeigen? –
Sie sollten viel mehr Informationen hinzufügen, aber wenn hardcoded so viel schneller ist, dann machen Sie definitiv etwas falsch. – TFennis