Rezime
Dodajte novi atribut plana izvršavanja upita EstimateRowsWithoutRowGoal u SQL Server 2017 Cumulative Update 3 (CU3) i Microsoft SQL Server 2016 Service Pack 2 (SP2).
Kada optimizator upita procenjuje cenu plana izvršavanja upita, on obično pretpostavlja da moraju biti obrađeni svi kvalifikovani redovi iz svih izvora. Međutim, neki upiti uzrokuju da optimizator upita traži plan koji će brže vratiti manji broj redova. Do toga može doći ako upit koristi odredbu TOP , FAST number_rows savet upita, odredbu IN ili EXISTS ili izraz SET ROWCOUNT { number | @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. Razlog je to što plan pretpostavlja da će manji broj redova morati da se obradi da bi se postigao cilj reda.
Napomena Procena napravljena pomoću cilja reda je približna. Ako stvarna raspodela podataka nije jednaka, ona može biti manja od stvarnog broja redova koji treba obraditi. Stoga može da kreira neefikasan plan upita. Kao privremeno rešenje za ovaj problem možete da koristite opciju upita KORISTI SAVET ('DISABLE_OPTIMIZER_ROWGOAL') ili zastavicu praćenja 4138.
Više informacija potražite u članku "Ažuriranje" Uvodi argument saveta za upit KORIŠĆENJE SAVETA u sistemu SQL Server 2016. Međutim, može biti teško da se u složenim upitima identifikujete da li se cilj reda primenjuje i u kojoj meri utiče na izbor plana.
Pomoću atributa EstimateRowsWithoutRowGoal možete da uporedite rezultate sa rezultatima atributa EstimateRows da biste videli koliko cilja reda utiče na procene optimizatora upita.
Napomena Ako cilj reda nije primenjen na određeni operator plana upita, ovaj atribut nije uključen.
Više informacija
Ova ispravka je uključena u sledeću kumulativnu ispravku za SQL Server:
Kumulativna ispravka 3 za SQL Server 2017
Osnovni podaci o kumulativnim ispravkama za SQL Server:
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Najnovija kumulativna ispravka za SQL Server 2017
Informacije o servisnom paketu za SQL Server
Ova ispravka je uvedena u sledećim servisnim paketima za SQL Server:
Servisni paket 2 za SQL Server 2016
Servisni paket 3 za SQL Server 2014
Osnovni podaci o servisnim paketima za SQL Server:
Servisni paketi su kumulativni. Svaki novi servisni paket sadrži sve ispravke koje su u prethodnim servisnim paketima, zajedno sa svim novim ispravkama. Preporučujemo 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.
Kako odrediti verziju, izdanje i nivo ažuriranja za SQL Server i njegove komponente
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.