KB4522127 – OPRAVA: Slabý výkon dotazu v dôsledku odhadu nízkej kardinality v SQL Server 2016, keď používate predvolenú hodnotu CE a stĺpec je pokrytý jednostĺpcovou aj viacstĺpcovou štatistikou

Vzťahuje sa na
SQL Server 2016 Service Pack 2 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 2016 Standard - duplicate (do not use)

Príznaky

Predpokladajme, že spúšťate dotaz obsahujúci spojenie alebo agregáciu pre stĺpec, na ktorý sa vzťahuje štatistika jedného stĺpca aj štatistiky viacerých stĺpcov (pričom tento stĺpec nie je úvodným stĺpcom). Ak používate predvolený odhad kardinality (CE) v SQL Server 2016, môže sa podhodnotiť počet jedinečných riadkov. Výsledkom nie je optimálny plán vykonávania dotazu (napríklad nízky odhad môže spôsobiť nedostatočné pridelenie pamäte pre operátor hash, čo spôsobí presahovanie dotazu na databázu tempdb).

Stav

Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.

Riešenie

Tento problém je opravený v nasledujúcej kumulatívnej aktualizácii pre SQL Server:

Poznámka Ak chcete, aby sa táto oprava prejavila, je potrebné povoliť rýchle opravy optimalizátora dotazov pomocou príznaku sledovania (TF) 4199 alebo zodpovedajúcej konfigurácie databázy alebo možnosti pomôcky dotazu.

      

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:

Alternatívne riešenie

Tento problém možno vyriešiť pridaním nasledujúcej pomôcky pre dotaz:

USE HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION')

Odkazy

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