Simptome
Să presupunem că rulați o interogare care implică o asociere sau o agregare pe o coloană care este acoperită atât de statisticile cu o singură coloană, cât și de statisticile cu mai multe coloane (în care această coloană nu este coloana inițială). Dacă utilizați un estimator de cardinalitate (CE) implicit în SQL Server 2016, este posibil ca acesta să subestimeze numărul de rânduri distincte. Acest lucru duce la un plan de executare a interogărilor suboptim (de exemplu: o estimare scăzută poate determina o acordare de memorie insuficientă pentru un operator hash, ceea ce determină vărsarea interogării către tempdb).
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.
Rezolvare
Această problemă este remediată în următoarea actualizare cumulativă pentru SQL Server:
Notă Pentru ca această remediere să aibă efect, trebuie să activați remedierile rapide ale optimizatorului de interogări utilizând semnalizarea de urmărire (TF) 4199 sau configurația corespunzătoare domeniului bazei de date sau opțiunea sugestie de interogare.
Despre actualizările cumulative pentru SQL Server:
Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Soluție
Această problemă poate fi remediată adăugând următorul indiciu de interogare:
UTILIZAȚI HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION')
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.