Simptomi
Pretpostavimo da pokrećete upit koji uključuje spajanje ili agregaciju na stupcu koji je pokriven statistikama o jednom stupcu ili s više njih (pri čemu taj stupac nije vodeći stupac). Ako koristite zadani procjenitelj kardinalnosti (CE) u sustavu SQL Server 2016, on može podcijeniti broj različitih redaka. To dovodi do neoptimalnog plana izvršenja upita (na primjer: niska procjena može uzrokovati nedovoljno dodjeljivanje memorije za operator raspršivanja, što uzrokuje prelijevanje upita na tempdb).
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.
Rješenje
Taj je problem riješen u sljedećem kumulativnom ažuriranju za SQL Server:
Napomena Da bi popravak stupio na snagu, morate omogućiti hitne popravke optimizatora upita pomoću mogućnosti Trace Flag (TF) 4199 ili odgovarajuće konfiguracije u opsegu baze podataka ili mogućnost podsjetnika za upit.
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:
Zaobilazno rješenje
Taj se problem može riješiti dodavanjem sljedećeg podsjetnika za upit:
USE HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION')
Reference
Saznajte više o terminologiji koju Microsoft upotrebljava za opisivanje softverskih ažuriranja.