Mam dynamiczny kawałek SQL. Uruchomienie trwa około 4 minut. Jeśli zamiast tego pobierze dane wyjściowe SQL i uruchomię je, zajmie to około 20 sekund. Skąd ta rozbieżność? Wiem, że stworzenie wersji SQL w wersji dynamicznej zajęłoby trochę czasu, ale nie mogę sobie wyobrazić, że jest TAK wysoka.Dynamiczny SQL trwa znacznie dłużej niż zakodowany odpowiednik
Ktoś ma jakieś pomysły? Te dwa zapytania powinny być identyczne, więc podejrzewałem, że było to dziwne z buforowaniem planu zapytań, ale tak naprawdę nie mam wielkiego pomysłu.
Edytuj: Aby wyjaśnić, co rozumiem przez przyjęcie wyników.
W dynamicznym SQL ostatnia linia jest
EXEC sp_executesql @myQuery,
N'@var1 INT,
@var2 INT,
@var2 INT',
@var1,
@var2,
@var3
wziąłem wartość MyQuery i umieścić ją w osobnym pliku SQL. To trwa 20 sekund, podczas gdy dynamiczny, który wykorzystuje wykonanie, zajmuje 4 minuty.
Edycja 2 I usunąć parametrów. Mam ciekawe wyniki. Dynamiczna instrukcja SQL dostrzegła poprawę wydajności. Wersja zakodowana na sztywno dostrzegła ogromny hit wydajności. Obaj są teraz mniej więcej równi.
Proszę zaksięgować swój kod. – Taryn
Czy możesz pokazać swój kod? –
Powinieneś dodać dużo więcej informacji, ale jeśli na stałe jest to znacznie szybsze, to zdecydowanie robisz coś złego. – TFennis