Suvestinė
Įtraukite naują užklausos vykdymo plano atributą EstimateRowsWithoutRowGoal į "„SQL Server“ 2017" 3 kaupiamąjį naujinimą (CU3) ir "Microsoft „SQL Server“ 2016" 2 pakeitimų paketą (SP2).
Kai užklausų optimizavimo priemonė įvertina užklausų vykdymo plano kainą, paprastai daroma prielaida, kad turi būti apdorotos visos reikalavimus atitinkančios eilutės iš visų šaltinių. Tačiau kai kurios užklausos verčia užklausų optimizavimo priemonę ieškoti plano, kuris greičiau pateiks mažesnį eilučių skaičių. Taip gali atsitikti, jei užklausoje naudojama sąlyga TOP , FAST number_rows užklausos užuomina, sąlyga IN arba EXISTS arba sakinys SET ROWCOUNT { number | @number\_var } . Šiuo atveju optimizavimo priemonė, apskaičiuodama užklausos planą, naudoja eilutės tikslą. Jei taikomas eilutės tikslo planas, apytikris eilučių skaičius užklausos vykdymo plane sumažinamas. Taip yra todėl, kad plane daroma prielaida, kad norint pasiekti eilutės tikslą, reikės apdoroti mažiau eilučių.
Atkreipkite dėmesį Įvertinimas, gaunamas naudojant eilutės tikslą, yra apytikslis. Jei faktinis duomenų paskirstymas yra netolygus, jis gali būti mažesnis nei faktinis eilučių, kurias reikia apdoroti, skaičius. Todėl gali būti sukurtas neefektyvus užklausų planas. Norėdami išspręsti šią problemą, galite naudoti užklausos parinktį USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') arba sekimo vėliavėlę 4138.
Daugiau informacijos žr. Naujinime pristatomas USE HINT užklausos užuominos argumentas "„SQL Server“ 2016". Tačiau sudėtingose užklausose gali būti sudėtinga nustatyti, ar taikomas eilutės tikslas ir kiek tai veikia plano pasirinkimą.
Naudodami atributą EstimateRowsWithoutRowGoal , galite palyginti rezultatus su atributo EstimateRows rezultatais, kad pamatytumėte, kokią įtaką eilutės tikslas daro užklausų optimizavimo priemonės įvertinimams.
Atkreipkite dėmesį Jei eilutės tikslas netaikomas konkrečiam užklausos plano operatoriui, šis atributas neįtraukiamas.
Daugiau informacijos
Šis naujinimas įtrauktas į šį kaupiamąjį naujinimą, skirtą „SQL Server“:
3 kaupiamasis naujinimas, skirtas „SQL Server“ 2017
Apie "„SQL Server“" kaupiamuosius naujinimus:
Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:
Naujausias "„SQL Server“ 2017" kaupiamasis naujinimas
Pakeitimų paketo informacija, skirta „SQL Server“
Šis naujinimas įtrauktas į šiuos "„SQL Server“" pakeitimų paketus:
"„SQL Server“ 2016" 2 pakeitimų paketas
3 pakeitimų paketas, skirtas „SQL Server“ 2014
Apie "„SQL Server“" pakeitimų paketus:
Pakeitimų paketai yra kaupiamieji. Kiekviename naujame pakeitimų pakete yra visos ankstesniuose pakeitimų paketuose esančios pataisos ir visos naujos pataisos. Rekomenduojame taikyti naujausią pakeitimų paketą ir naujausią to pakeitimų paketo kaupiamąjį naujinimą. Prieš įdiegiant naujausią pakeitimų paketą nereikia įdiegti ankstesnio pakeitimų paketo. Norėdami rasti daugiau informacijos apie naujausią pakeitimų paketą ir naujausią kaupiamąjį naujinimą, naudokite šio straipsnio 1 lentelę.
Kaip nustatyti "„SQL Server“" ir jo komponentų versiją, leidimą ir atnaujinimo lygį
Nuorodos
Sužinokite daugiau apie terminus, kuriuos „„Microsoft““ naudoja apibūdindama programinės įrangos naujinimus.