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.