Ako uvádza názov, nerozumiem, prečo by sp_executeSQL vygeneroval úplne iný plán spúšťania než spustenie dotazu zo Sql Management Studio.
Moja otázka bude trvať 3 sekundy, keď sa spustí z SQL manažmentu Studio, kde ako dotaz spustený v manažérskom štúdiu prostredníctvom sp_executeSQL bude trvať 5 minút.
Aktualizoval som štatistiky a prehľadoval indexy, ale skutočnosť zostala v mojej hlave, že plán spúšťania z sp_executeSQL bol FAR horší ako spustenie sql priamo z môjho manažmentového štúdia.
Takže tu je moja otázka: Prečo by plány popravy líšili toľko medzi spustením dotazu týmito dvomi rôznymi spôsobmi?
Vďaka
odpovede:
5 pre odpoveď č. 1vidieť toto
v podstate, môže existovať viacero [vykonávacích] plánov pre ten istý postup
2 pre odpoveď č. 2
Zváž toto. Keď vykonáte uloženú procedúru, tento postup bude mať vlastný plán vykonávania. Keď spustíte príkaz dotazu, opäť bude mať vlastný plán vykonávania. Teraz, keď používate sp_executeSQL, používate túto uloženú procedúru na dynamické vykonanie dotazu. Takže v podstate jeho plán realizácie je kombinácia sp_executeSQL a vášho dotazu.