KB4051361 – Informácie o cieli riadka optimalizátora v pláne vykonávania dotazu pridané v SQL Server 2014, 2016 a 2017

Vzťahuje sa na
SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Súhrn

Pridajte nový atribút plánu vykonávania dotazu EstimateRowsWithoutRowGoal do kumulatívnej aktualizácie 3 (CU3) pre SQL Server 2017 a balík Microsoft SQL Server 2016 Service Pack 2 (SP2).

Keď optimalizátor dotazov odhaduje náklady na plán vykonávania dotazu, zvyčajne predpokladá, že je potrebné spracovať všetky oprávňujúce riadky zo všetkých zdrojov. Niektoré dotazy však spôsobia, že optimalizátor dotazov vyhľadá plán, ktorý vráti menší počet riadkov rýchlejšie. Môže sa to vyskytnúť, ak dotaz používa klauzulu TOP , pomôcku k dotazu FAST number_rows , klauzulu IN alebo EXISTS alebo príkaz SET ROWCOUNT { number | @number\_var } . V tomto prípade optimalizátor používa pri odhade plánu dotazu cieľ riadka. Ak sa použije plán cieľa riadka, odhadovaný počet riadkov v pláne vykonávania dotazu sa zníži. Dôvodom je, že v pláne sa predpokladá, že na dosiahnutie cieľového cieľa riadka bude potrebné spracovať menší počet riadkov.

Poznámka Odhad vytvorený pomocou cieľa riadka je približný. Ak je skutočné rozloženie údajov nerovnomerné, môže byť menšie ako skutočný počet riadkov, ktoré sa majú spracovať. Preto by sa mohol vytvoriť neefektívny plán dotazu. Ako alternatívne riešenie tohto problému môžete použiť možnosť dotazu POUŽIŤ TIP (DISABLE_OPTIMIZER_ROWGOAL) alebo príznak sledovania 4138.

Ďalšie informácie nájdete v téme Aktualizácia zavádza Použitie argumentu tipu pre dotaz HINT v SQL Server 2016. V zložitých dotazoch však môže byť náročné zistiť, či sa použil cieľ riadka a do akej miery ovplyvňuje výber plánu.

Pomocou atribútu EstimateRowsWithoutRowGoal môžete porovnať výsledky s výsledkami atribútu EstimateRows a zistiť, do akej miery cieľ riadka ovplyvňuje odhady optimalizátora dotazov.

Poznámka Ak sa cieľ riadka nepoužije pre konkrétny operátor plánu dotazu, tento atribút sa nezahrnie.

Ďalšie informácie

Táto aktualizácia je súčasťou nasledujúcej kumulatívnej aktualizácie pre SQL Server:

Kumulatívna aktualizácia 3 pre SQL Server 2017

Informácie o kumulatívnych aktualizáciách pre SQL Server:

Každá nová kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchle opravy a opravy zabezpečenia, ktoré boli zahrnuté v predchádzajúcej kumulatívnej aktualizácii. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:

Najnovšia kumulatívna aktualizácia pre SQL Server 2017

Informácie o balíku Service Pack pre SQL Server

Táto aktualizácia sa zavádza v nasledujúcich balíkoch Service Pack pre SQL Server:

Balík Service Pack 2 pre SQL Server 2016

Balík Service Pack 3 pre SQL Server 2014

Informácie o balíkoch Service Pack pre SQL Server:

Balíky Service Pack sú kumulatívne. Každý nový balík Service Pack obsahuje všetky opravy, ktoré sa nachádzajú v predchádzajúcich balíkoch Service Pack, spolu so všetkými novými opravami. Odporúčame použiť najnovší balík Service Pack a najnovšiu kumulatívnu aktualizáciu pre daný balík Service Pack. Pred inštaláciou najnovšieho balíka Service Pack nemusíte inštalovať predchádzajúci balík Service Pack. Ak chcete vyhľadať ďalšie informácie o najnovšom balíku Service Pack a najnovšej kumulatívnej aktualizácii, použite tabuľku č. 1 v nasledujúcom článku.

Ako určiť verziu, vydanie a úroveň aktualizácie SQL Server a jeho súčastí

Odkazy

Získajte informácie o terminológii, ktorú Microsoft používa na popis aktualizácií softvéru.