Sintomi
Si supponga di eseguire una query che implica un join o un'aggregazione in una colonna coperta da statistiche a colonna singola e a colonne multiple (in cui questa colonna non è la colonna iniziale). Se si usa lo strumento di stima della cardinalità (CE) predefinito in SQL Server 2016, è possibile che il numero di righe distinte venga sottostimato. Questo porta a un piano di esecuzione della query non ottimale, ad esempio: una stima bassa può causare una concessione di memoria insufficiente per un operatore hash, che causa la distribuzione della query a tempdb.
Stato
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".
Risoluzione
Questo problema è stato risolto nel seguente aggiornamento cumulativo per SQL Server:
Avvertenza Per rendere effettiva questa correzione, è necessario abilitare gli aggiornamenti rapidi di query optimizer usando il flag di traccia (TF) 4199 o la configurazione con ambito database corrispondente o l'opzione dell'hint per la query.
Informazioni sugli aggiornamenti cumulativi per SQL Server:
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. Vedere gli aggiornamenti cumulativi più recenti per SQL Server:
Soluzione alternativa
Questo problema può essere risolto aggiungendo l'hint per la query seguente:
USE HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION')
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.