KB3192154 - La scelta di un piano di query non ottimale causa prestazioni scadenti quando in SQL Server 2016 e 2017 vengono eseguite ricerche in valori esterni all'intervallo rappresentato nelle statistiche

Si applica a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows SQL Server 2016 Service Pack 1

Sintomi

Si consideri lo scenario seguente:

  • Si usa una configurazione di stima di cardinalità (CE) che corrisponde al livello di compatibilità del database 120 o a un livello successivo per il sistema Microsoft SQL Server 2016 e 2017.
  • Si esegue una query che contiene un predicato di ricerca.
  • La query cerca i valori minori o uguali a qualsiasi numero inferiore al valore minimo di RANGE_HI_KEY archiviato nell'oggetto statistiche. In alternativa, la query cerca i valori maggiori del valore massimo di RANGE_HI_KEY per le stesse statistiche.

In questo scenario, Query Optimizer sovrastima il numero di righe. Ciò potrebbe causare una scelta del piano di query non ottimale e prestazioni scarse.

Risoluzione

La correzione di questo problema è inclusa nei seguenti aggiornamenti cumulativi per SQL Server:

Aggiornamento cumulativo 6 per SQL Server 2017

Aggiornamento cumulativo 8 per SQL Server 2016 SP1

Aggiornamento cumulativo 2 per SQL Server 2016
Nota: dopo aver installato questo aggiornamento, è necessario abilitare il flag di traccia 4199 per abilitare questa correzione. Per abilitare il flag di traccia 4199, vedere l'argomento Flag di traccia (Transact-SQL) nel sito Web Microsoft Developer Network (MSDN).

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:

Aggiornamento cumulativo più recente per SQL Server 2017

Aggiornamento cumulativo più recente per SQL Server 2016

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Riferimenti

Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.