Simptomi
Pretpostavimo da pokrenete upit koji uključuje spoj ili agregaciju u koloni koja je pokrivena i jednom kolonom i više kolona statistiku (u kojoj ova kolona nije vodeća kolona). Ako koristite default Cardinality Estimator (CE) in SQL Server 2016, it may underestimate number različitih redova. To dovodi do pod-optimalnog plana izvršavanja upita (na primer: niska procena može dovesti do nedostatka memorijske granta za operatora hasha, što dovodi do prosipanja upita u tempdb).
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Rešenje
Ovaj problem je rešen u sledećoj kumulativnoj ispravci za SQL Server:
Napomena Da bi ova ispravka stupila na snagu, morate da omogućite hitne ispravke za Query Optimizer pomoću zastavice za praćenje (TF) 4199 ili odgovarajuće opcije za konfigurisanje opsega baze podataka ili podsetnika za upite.
Kumulativne ispravke 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:
Rešenje
Ovaj problem se može otkloniti dodavanjem sledećeg podsetnika za upit:
Koristite HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION')
Reference
Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ispravki.