Sintomi
Si consideri lo scenario seguente:
- È disponibile una query che usa un predicato non di uguaglianza in una colonna GUID univoca in SQL Server 2014 o 2016.
- Le statistiche vengono aggiornate usando il campionamento predefinito. In alternativa, le nuove righe vengono inserite nella tabella dopo l'ultimo aggiornamento delle statistiche.
- SQL Server usa il nuovo estimatore di cardinalità in cui la modalità di compatibilità del database è impostata su 120.
- I valori GUID non sono distribuiti uniformemente nella tabella.
In questo scenario, quando si esegue la query, le prestazioni potrebbero risultare ridotte a causa di un numero di righe stimato in modo errato per il predicato nel piano di query.
Risoluzione
Questo problema è stato risolto per la prima volta nell'aggiornamento cumulativo seguente per SQL Server:
Aggiornamento cumulativo 6 per SQL Server 2014 Service Pack 1
Aggiornamento cumulativo 1 per SQL Server 2016
Dopo aver installato questo pacchetto di aggiornamento cumulativo, è necessario abilitare il contrassegno di traccia 4199. A tale scopo, è possibile aggiungere il parametro di avvio -T4199. In alternativa, è possibile usare l'istruzione dbcc traceon(4199) per una sessione specifica.
Informazioni sugli aggiornamenti cumulativi per SQL Server
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e tutte le correzioni per la sicurezza inclusi nell'aggiornamento cumulativo precedente. Scopri gli aggiornamenti cumulativi più recenti per SQL Server:
Ultimo aggiornamento cumulativo per SQL Server 2014
Ultimo aggiornamento cumulativo 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.