/ / Dlaczego dokładnie taki sam wynik zapytania SQL z innym planem wykonania, jeśli zostanie wykonany za pomocą procedury sp_executeSQL? - sql-server, tsql, sql-execution-plan, sp-executesql

Dlaczego dokładnie ten sam wynik zapytania SQL z innym planem wykonania, jeśli zostanie wykonany za pomocą procedury sp_executeSQL? - sql-server, tsql, sql-execution-plan, sp-executesql

Jak podaje tytuł, nie rozumiem, dlaczego sp_executeSQL wygenerowałoby zupełnie inny plan wykonania niż uruchomienie zapytania z Sql Management Studio.

Zapytanie, o które chodzi, potrwa 3 sekundy, gdy uruchomię go z SQL Management Studio, gdzie zapytanie uruchamiane w studio zarządzania przez sp_executeSQL zajmie 5 minut.

Zaktualizowałem statystyki i przejrzałem indeksy, ale fakt pozostał w mojej głowie, że plan wykonania sp_executeSQL był DUŻO gorszy niż uruchomienie sql bezpośrednio z mojego studia zarządzania.

Oto moje pytanie: dlaczego plany wykonania różniłyby się między uruchomieniem zapytania na dwa różne sposoby?

Dzięki

Odpowiedzi:

5 dla odpowiedzi № 1

widzieć to

gruntownie, może być wiele planów [wykonania] dla tej samej procedury


2 dla odpowiedzi nr 2

Rozważ to. Po uruchomieniu procedury składowanej ta procedura będzie miała własny plan wykonania. Kiedy wykonasz instrukcję zapytania, znowu będzie miał swój własny plan wykonania. Teraz przy użyciu sp_executeSQL uruchamiasz tę procedurę składowaną, aby wykonać zapytanie dynamicznie. Zasadniczo jego plan wykonania jest połączeniem sp_executeSQL i zapytania.