Postupy: Zakázání předkompilací uložené procedury pomocí plán KEEPFIXED

Překlady článku Překlady článku
ID článku: 276220 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

V některých situacích kde recompiled uložené procedury mohou náklady recompilation nepřevýší výhodu je odvozen z tím. Poznámka, protože SQL Server Service Pack 2 (SP2) a nepodporují nižší úrovně recompilation výkazu, celku uložené procedury musí být recompiled při aktivaci překompilujte. Číslo překompilování spouštěné během spuštění uložené procedury a délka uložené procedury tedy může někdy zvýšit celkovou dobu trvání spuštění uložené procedury.

Začátek v SQL Server 7.0 SP3 byl zaveden nový rada dotazu KEEPFIXED plán pomoci v situacích, kde náklady recompilation je více než náklady na použití existující plán.

Rada KEEPFIXED plán dotazu vynutí Optimalizátor dotazu k nikdy znovu zkompilovat dotaz z důvodu změny statistiky nebo indexovaný sloupec změny (například aktualizace, odstranění nebo vložení). Další informace o odstraňování recompilation uložené procedury klepněte na následující číslo článku databáze Microsoft Knowledge Base:
243586INF: Odstraňování uložená procedura Recompilation

Ukázkový kód, který používá tipy plán KEEPFIXED

Ukázkový kód v této části je z následujícího článku znalostní báze Microsoft Knowledge Base:
243586INF: Odstraňování uložená procedura Recompilation
   drop procedure RowModifications 
   go
   create procedure RowModifications as
   -- assume SomeTable exists with the same definition as #t, 
   -- and has over 1000 rows
   create table  #t (a int )
   select * from  #t
   insert  #t select * from retest
   select count(*) from #t  where a = 37
   --option (keepfixed plan)
   go
   exec RowModifications
   go
   exec RowModifications
   go 
 
				
Pro druhé spuštění procedury RowModifications způsobuje následující kód recompilation:
  select count(*) from #t where a = 37
				
používáte tento kód:
Option (keepfixed plan)
				
V tomto dotazu dotazu nezpůsobí recompilation znovu:
select count(*) from #t  where a = 37 option (keepfixed plan) 
				
Poznámka tato rada dotazu použity na úrovni příkazu a neovlivní oboru celé uložené procedury. Pokud chcete, aby tato možnost ovlivní více příkazů v uložené proceduře, každý příkaz musí implementovat rada chování je použití serveru SQL. Této nápovědy je k dispozici pro SQL Server 7.0 Service Pack 2 (SP2) nebo starší.

Vlastnosti

ID článku: 276220 - Poslední aktualizace: 19. července 2006 - Revize: 5.4
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
Klíčová slova: 
kbmt kbhowtomaster kbinfo KB276220 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:276220

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com