Shrnutí
Přidejte nový atribut plánu provádění dotazu EstimateRowsWithoutRowGoal do kumulativní aktualizace 3 (CU3) pro SQL Server 2017 a Microsoft SQL Server 2016 Service Pack 2 (SP2).
Když optimalizátor dotazů odhaduje náklady na plán provedení dotazu, obvykle předpokládá, že je potřeba zpracovat všechny kvalifikační řádky ze všech zdrojů. Některé dotazy ale způsobí, že optimalizátor dotazů vyhledá plán, který vrátí menší počet řádků rychleji. K tomu může dojít, pokud dotaz používá klauzuli TOP , nápovědu k dotazu FAST number_rows , klauzuli IN nebo EXISTS nebo příkaz SET ROWCOUNT { number | @number\_var } . V tomto případě používá optimalizátor při odhadu plánu dotazu cíl řádku. Pokud se použije plán cílů řádků, sníží se odhadovaný počet řádků v plánu provedení dotazu. Plán totiž předpokládá, že k dosažení cílového řádku bude nutné zpracovat menší počet řádků.
Poznámka Odhad dosažený pomocí cíle řádku je přibližný. Pokud není skutečné rozložení dat rovnoměrné, může být menší než skutečný počet řádků, které je třeba zpracovat. Proto by to mohlo vytvořit neefektivní plán dotazů. Jako alternativní řešení tohoto problému můžete použít možnost dotazu POUŽÍT TIP (DISABLE_OPTIMIZER_ROWGOAL) nebo příznak sledování 4138.
Další informace najdete v tématu Aktualizace zavádí argument nápovědy dotazu USE HINT v SQL Server 2016. Ve složitých dotazech ale může být náročné zjistit, jestli se použije cíl řádku a do jaké míry to ovlivní výběr plánu.
Pomocí atributu EstimateRowsWithoutRowGoal můžete porovnat výsledky s výsledky atributu EstimateRows a zjistit, kolik cílový řádek ovlivňuje odhady Optimalizátoru dotazů.
Poznámka Pokud není cíl řádku použit u konkrétního operátora plánu dotazu, není tento atribut zahrnut.
Další informace
Tato aktualizace je součástí následující kumulativní aktualizace pro SQL Server:
Kumulativní aktualizace 3 pro SQL Server 2017
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:
Nejnovější kumulativní aktualizace pro SQL Server 2017
Informace o aktualizacích Service Pack pro SQL Server
Tato aktualizace je součástí následujících aktualizací Service Pack pro SQL Server:
Service Pack 2 pro SQL Server 2016
Service Pack 3 pro SQL Server 2014
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í
Reference
Podívejte se na informace o terminologii, kterou společnost Microsoft používá k popisování aktualizací softwaru.