Simptomai
Kai užpildysite lentelės kintamąjį su daugybe eilučių ir prisijungsite prie jos su kitomis lentelėmis, užklausos optimizatorius gali pasirinkti neefektyvų užklausos planą, kuris gali lemti lėto užklausos veikimą.
Sprendimas
Kai pritaikote šias karštąsias pataisas, galite įjungti sekimo vėliavėlę 2453, kad būtų leidžiama naudoti lentelės kintamąjį, kai pakeičiama pakankamai eilučių skaičius. Tai gali leisti užklausos optimizavimo priemonei pasirinkti efektyvesnį planą. Problema pirmą kartą buvo išspręsta Šiame kaupiamųjų naujinimų arba/ir pakeitimų paketuose, "SQL Server".
Kaupiamasis naujinimas 3 SQL serverio 2014 /en-us/help/2984923
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Pakeitimų paketai yra kaupiamieji. Kiekviename naujame pakeitimų pakete yra visos pataisos, kurios yra ankstesniuose pakeitimų paketuose, taip pat visos naujos pataisos. Mūsų rekomendacija yra taikyti naujausią pakeitimų paketą ir naujausią kaupiamąjį naujinimą šiam pakeitimų paketui. Prieš diegiant naujausią pakeitimų paketą, neturite įdiegti ankstesnio pakeitimų paketo. Naudokite 1 lentelę šiame straipsnyje, jei norite rasti daugiau informacijos apie naujausią pakeitimų paketą ir naujausią kaupiamąjį naujinimą:
Kaip nustatyti "SQL Server" ir jo komponentų versiją, leidimą ir naujinimo lygį
Daugiau informacijos
Kai naudojate lentelės kintamąjį paketinėje arba procedūroje, užklausa kompiliuojama ir optimizuota pradiniam tuščiam lentelės kintamojo būsenos. Jei šis lentelės kintamasis yra daug eilučių vykdymo metu, iš anksto surinkti užklausos planas gali būti optimalus. Pvz., užklausa gali prisijungti prie lentelės kintamojo su įdėtuoju ciklu, nes jis paprastai efektyvesnis mažam eilučių skaičiui. Šis užklausos planas gali būti neveiksmingas, jei lentelės kintamasis yra milijonai eilučių. Maišos sujungimas gali būti geresnis pasirinkimas esant tokiai sąlygai. Norint gauti naują užklausos planą, jį reikia perkompiliuoti. Skirtingai nei kiti vartotojai arba laikinos lentelės, tačiau eilučių skaičiaus pokytis lentelės kintamajame nesukelia užklausos perkompiliavimo. Paprastai galite dirbti su šia PARINKTIMI (PERKOMPILIUOTI), kurioje yra nuosava pridėtinė savikaina. Sekimo vėliavėlė "2453" leidžia gauti užklausos perkompiliuoti nenaudojant parinkties (naujo). Šis sekimo žymė skiriasi nuo parinkties (naujo) dviejuose pagrindiniuose aspektuose. (1) jis naudoja tą pačią eilučių skaičiaus ribą kaip ir kitos lentelės. Užklausos nereikia kompiliuoti kiekvienam vykdymui, skirtingai nei parinktis (naujo). Jis suaktyvins tik tada, kai eilučių skaičiaus pokytis viršija iš anksto apibrėžtą ribą. (2) parinktis (PERKOMPILIUOTI) verčia užklausą "Peek" parametrams ir optimizuoja jų užklausą. Šis sekimo vėliavėlė nepriverčia parametro peeking.Pastaba Ši sekimo žymė turi būti įjungta vykdymo metu. Negalite naudoti šio sekimo vėliavėlės su QUERYTRACEON. Ši sekimo žymė turi būti naudojama atsargiai, nes ji gali padidinti užklausų užklausų, kurios gali kainuoti daugiau nei santaupos iš geresnės užklausos optimizavimą, skaičių.
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.