Rezime
Dodajte novi atribut EstimateRowsWithoutRowGoal plana izvršavanja upita u SQL Server 2017 Kumulativnu ispravku 3 (CU3) i Microsoft SQL Server 2016 servisni paket 2 (SP2).
Kada optimizator upita proceni troškove plana izvršavanja upita, obično pretpostavlja da svi redovi koji se kvalifikuju iz svih izvora moraju da se obrade. Međutim, neki upiti prouzrokuje da Optimizator upita traži plan koji će brže vratiti manji broj redova. Do ovoga može doći ako upit koristi odredbu TOP,podsetnik za upit FAST number_rows,odredbu IN ili EXISTS ili odredbu SET ROWCOUNT { broj | @number_var } . U ovom slučaju, optimizator koristi cilj reda kada procenjuje plan upita. Ako se primeni plan cilja reda, smanjuje se procenjeni broj redova u planu izvršavanja upita. Do ovoga dolazi zato što plan pretpostavlja da će manji broj redova morati da se obradi da bi se postigao cilj reda.
Napomena Procena koja je napravljena korišćenjem cilja reda je približna. Ako stvarna raspodela podataka nije jednoobrazni, to može biti manje od stvarnog broja redova koji moraju da se obrade. Zbog toga bi mogao da kreira neefikasan plan upita. Kao rešenje za ovaj problem, možete da koristite opciju upita USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') ili zastavicu za praćenje 4138.
Više informacija potražite u članku Ažuriranje uvodi argument use HINT podsetnika za upite u SQL Server 2016. Međutim, možda će biti izazovno identifikovati u složenim upitima da li je primenjen cilj reda i koliko on utiče na izbor plana.
Pomoću atributa EstimateRowsWithoutRowGoal rezultate možete da uporedite sa onima iz atributa EstimateRows da biste videli koliko cilj reda utiče na procene optimizatora upita.
Napomena Ako cilj reda nije primenjen na određeni operator plana upita, ovaj atribut neće biti uključen.
Više informacija
Ova ispravka je uključena u sledeću kumulativnu ispravku za SQL Server:
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Informacije o servisnom paketu za SQL Server
Ova ispravka je uvedena u sledeće servisne pakete za SQL Server:
Servisni paketi su kumulativni. Svaki novi servisni paket sadrži sve ispravke koje se naći u prethodnim servisnim paketima, zajedno sa svim novim ispravkama. Naša preporuka je da primenite najnoviji servisni paket i najnoviju kumulativnu ispravku za taj servisni paket. Ne morate da instalirate prethodni servisni paket pre nego što instalirate najnoviji servisni paket. Koristite tabelu 1 u sledećem članku da biste pronašli više informacija o najnovijem servisnom paketu i najnovijoj kumulativnoj ispravci.
Utvrđivanje verzije, izdanja i nivoa ažuriranja sistema SQL Server i njegovih komponenti
Reference
Saznajte više o terminologijikoju Microsoft koristi za opisivanje softverskih ispravki.