Příznaky
Když proměnnou tabulky naplníte mnoha řádky a pak ji spojíte s jinými tabulkami, může optimalizátor dotazů zvolit neefektivní plán dotazů, což může vést ke zpomalení výkonu dotazů.
Řešení
Po použití této opravy hotfix můžete zapnout příznak trasování 2453, který proměnné tabulky umožní aktivovat opětovnou kompilaci při změně dostatečného počtu řádků. To může optimalizátoru dotazů umožnit zvolit efektivnější plán.
Tento problém byl poprvé opraven v následujících kumulativních aktualizacích nebo aktualizacích Service Pack pro SQL Server.
Kumulativní aktualizace 3 pro SQL Server 2014 /en-us/help/2984923
Informace o kumulativních aktualizacích pro SQL Server
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
Service Pack 2 pro SQL Server 2012
Informace o aktualizacích Service Pack pro SQL Server
Aktualizace Service Pack jsou kumulativní. Každá nová aktualizace Service Pack obsahuje všechny opravy z předchozích aktualizací Service Pack společně s novými opravami. Doporučujeme použít nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci pro tuto aktualizaci Service Pack. Před instalací nejnovější aktualizace Service Pack není nutné instalovat předchozí aktualizaci Service Pack. Další informace o nejnovější aktualizaci Service Pack a nejnovější kumulativní aktualizaci najdete v tabulce 1 v následujícím článku:
Jak zjistit verzi, edici a úroveň aktualizace systému SQL Server a jeho součástí
Další informace
Když použijete proměnnou tabulky v dávce nebo proceduře, dotaz se zkompiluje a optimalizuje pro počáteční prázdný stav proměnné tabulky. Pokud je tato proměnná tabulky za běhu naplněna mnoha řádky, předkompilovaný plán dotazu již nemusí být optimální. Dotaz může například spojovat proměnnou tabulky s vnořenou smyčkou, protože je to obvykle efektivnější pro malý počet řádků. Tento plán dotazu může být neefektivní, pokud proměnná tabulky obsahuje miliony řádků. Spojení hash může být za takových podmínek lepší volbou. Pokud chcete získat nový plán dotazů, musíte ho překompilovat. Na rozdíl od jiných uživatelských nebo dočasných tabulek ale změna počtu řádků v proměnné tabulky neaktivuje překompilaci dotazu. Obvykle se to dá obejít pomocí funkce OPTION (REKOMPILACE), která má své vlastní režijní náklady.
Trasovací příznak 2453 umožňuje výhodu rekompilace dotazu bez OPTION (REKOMPILACE). Tento příznak se liší od OPTION (REKOMPILOVAT) ve dvou hlavních aspektech.
(1) Používá stejnou prahovou hodnotu počtu řádků jako ostatní tabulky. Dotaz není nutné kompilovat pro každé spuštění na rozdíl od OPTION (RECOMPILE). Spustí se opětovná kompilace pouze v případě, že změna počtu řádků překročí předdefinovanou prahovou hodnotu.
(2) OPTION (RECOMPILE) vynutí v dotazu náhled parametrů a optimalizaci dotazu pro ně. Tento příznak sledování nevynucuje prohlížení parametrů.
Všimněte si, že tento příznak trasování musí být zapnutý za běhu. Tento příznak trasování nelze použít s funkcí QUERYTRACEON. Tento příznak trasování je potřeba používat s opatrností, protože může zvýšit počet opakovaných kompilací dotazů, což by mohlo stát více než úspory díky lepší optimalizaci dotazů.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.