KB4051361 – Informacije o cilju u retku optimizatora u planu izvršenja upita dodane u SQL Server 2014, 2016 i 2017

Primjenjuje se na
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)

Sažetak

Dodajte novi atribut plana izvršenja upita EstimateRowsWithoutRowGoal u kumulativno ažuriranje 3 (CU3) za SQL Server 2017 i servisni paket 2 (SP2) za Microsoft SQL Server 2016.

Kada optimizator upita procjenjuje trošak plana izvršenja upita, obično pretpostavlja da je potrebno obraditi sve kvalificirane retke iz svih izvora. No neki upiti uzrokuju da optimizator upita traži tarifu koja će brže vratiti manji broj redaka. To se može dogoditi ako upit koristi uvjet TOP , FAST number_rows podsjetnik za upit, uvjet IN ili EXISTS ili naredbu SET ROWCOUNT { number | @number\_var } . U ovom slučaju optimizator pri procjeni plana upita koristi cilj retka. Ako se primijeni plan ciljeva retka, procijenjeni broj redaka u planu izvršenja upita se smanjuje. To je zato što plan pretpostavlja da će biti potrebno obraditi manji broj redaka da bi se dosegao ciljni redak.

Napomena Procjena izračunana pomoću cilja retka je približna. Ako stvarna distribucija podataka nije ujednačena, možda je manja od stvarnog broja redaka koje je potrebno obraditi. Stoga bi to mogao stvoriti neučinkovit plan upita. Kao zaobilazno rješenje za taj problem možete koristiti mogućnost upita PODSJETNIK ('DISABLE_OPTIMIZER_ROWGOAL') ili oznaku praćenja 4138.

Dodatne informacije potražite u članku Ažuriranje koje predstavlja argument podsjetnik za upit HINT u sustavu SQL Server 2016. No u složenim upitima može biti teško odrediti je li cilj retka primijenjen i koliko utječe na odabir plana.

Pomoću atributa EstimateRowsWithoutRowGoal rezultate možete usporediti s rezultatima atributa EstimateRows da biste vidjeli koliko cilj retka utječe na procjene optimizatora upita.

Napomena Ako se cilj retka ne primjenjuje na određeni operator plana upita, taj atribut nije uvršten.

Dodatne informacije

Ovo je ažuriranje obuhvaćeno sljedećim kumulativnim ažuriranjem za SQL Server:

Kumulativno ažuriranje 3 za SQL Server 2017

O kumulativnim ažuriranjima za SQL Server:

Svako novo kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su obuhvaćeni prethodnim kumulativnim ažuriranjem. Pogledajte najnovija kumulativna ažuriranja za SQL Server:

Najnovije kumulativno ažuriranje za SQL Server 2017

Informacije o servisnom paketu za SQL Server

Ovo je ažuriranje uvedeno u sljedećim servisnim paketima za SQL Server:

Service Pack 2 za SQL Server 2016

Service Pack 3 za SQL Server 2014

O servisnim paketima za SQL Server:

Servisni paketi kumulativni su. Svaki novi servisni paket sadrži sve popravke iz prethodnih servisnih paketa, zajedno sa svim novim popravcima. Preporučujemo da za taj servisni paket primijenite najnoviji servisni paket i najnovije kumulativno ažuriranje. Ne morate instalirati prethodni servisni paket da biste instalirali najnoviji. U tablici 1 sljedećeg članka potražite dodatne informacije o najnovijem servisnom paketu i najnovijem kumulativnom ažuriranju.

Kako odrediti verziju, izdanje i razinu ažuriranja SQL Server i njegovih komponenti

Reference

Saznajte više o terminologiji koju Microsoft upotrebljava za opisivanje softverskih ažuriranja.