KB4051361 – SQL Server 2014, 2016 ja 2017 lisatud päringutäiteplaani rea eesmärgiteabe optimeerimine

Rakenduskoht
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)

Kokkuvõte

Lisage uus atribuut EstimateRowsWithoutRowGoal päringu täitmise kava atribuudile SQL Server 2017 koondvärskendus 3 (CU3) ja Microsoft SQL Server 2016 Service Pack 2 (SP2).

Kui päringu optimeerija arvutab päringu täitmise plaani maksumuse, eeldab see tavaliselt, et kõiki kõigist allikatest pärinevaid kvalifitseeruvaid ridu tuleb töödelda. Mõned päringud põhjustavad aga päringu optimeerijal otsida lepingut, mis tagastab kiiremini väiksema arvu ridu. See võib juhtuda, kui päring kasutab TOP-klauslit , FAST number_rows päringuvihjet, IN - või EXISTS-klauslit või lauset SET ROWCOUNT { number | @number\_var } . Sel juhul kasutab optimeerija päringuplaani prognoosimisel rea sihti. Kui rea sihiplaan on rakendatud, vähendatakse päringu käivitamise plaani ridade hinnangulist arvu. Selle põhjuseks on see, et plaanis eeldatakse, et rea eesmärgi saavutamiseks tuleb töödelda väiksemat arvu ridu.

Märkus Reasiltide abil tehtud hinnang on ligikaudne. Kui andmete tegelik jaotus pole ühtne, võib see olla väiksem kui töödeldavate ridade tegelik arv. Seetõttu võib see luua ebaefektiivse päringuplaani. Selle probleemi ajutise lahendusena saate kasutada päringusuvandit USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') või Jälita lippu 4138.

Lisateavet leiate teemast Värskendus sisaldab funktsiooni USE HINT päringuvihje argumenti SQL Server 2016. Keerukates päringutes võib aga olla keeruline kindlaks teha, kas reasiht on rakendatud ja kui palju see plaani valikut mõjutab.

AtribuudiGa EstimateRowsWithoutRowGoal kasutades saate võrrelda atribuudi EstimateRows tulemeid, et näha, kui palju rea eesmärk mõjutab päringu optimeerija hinnanguid.

Märkus Kui reaeesmärki ei rakendata kindlale päringuplaani tehtemärgile, siis seda atribuuti ei kaasata.

Veel teavet

See värskendus on kaasatud järgmisesse SQL Server koondvärskendusse:

koondvärskendus 3 SQL Server 2017 jaoks

Teave SQL Server koondvärskenduste kohta.

Iga uus koondvärskendus SQL Server sisaldab kõiki kiirparandusi ja kõiki turbeparandusi, mis olid kaasatud eelmise koondvärskenduse. Vaadake uusimaid SQL Server koondvärskendusi.

Uusim koondvärskendus SQL Server 2017 jaoks

SQL Server hoolduspaketi teave

See värskendus tehakse kättesaadavaks järgmistes SQL Server hoolduspakettides.

Hoolduspakett 2 SQL Server 2016 jaoks

Hoolduspakett Service Pack 3 for SQL Server 2014

Teave SQL Server hoolduspakettide kohta.

Hoolduspaketid on kumulatiivsed. Iga uus hoolduspakett sisaldab kõiki varasemates hoolduspakettides sisalduvaid parandusi koos uute parandustega. Meie soovitus on rakendada selle hoolduspaketi jaoks uusim hoolduspakett ja uusim koondvärskendus. Te ei pea enne uusima hoolduspaketi installimist installima eelmist hoolduspaketti. Uusima hoolduspaketi ja uusima koondvärskenduse kohta lisateabe saamiseks kasutage järgmises artiklis toodud tabelit 1.

SQL Server ja selle komponentide versiooni, väljaande ja värskenduse taseme määratlemine

Viited

Lisateave Microsofti tarkvaravärskenduste terminoloogia kohta.