Sintomi
Considerare lo scenario descritto di seguito:
-
Si dispone di una query che usa un predicato di non uguaglianza in una colonna GUID univoca in SQL Server 2014 o 2016.
-
Le statistiche vengono aggiornate con il campionamento predefinito. In alternativa, le nuove righe vengono inserite nella tabella dopo l'ultimo aggiornamento delle statistiche.
-
SQL Server usa il nuovo estimatore della cardinalità in cui la modalità compatibilità del database è impostata su 120.
-
I valori GUID non vengono distribuiti in modo uniforme nella tabella.
In questo scenario, quando si esegue la query, è possibile che si verifichino scarse prestazioni a causa di un numero di righe stimato erroneamente per il predicato nel piano della 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 2016Dopo aver installato questo pacchetto di aggiornamento cumulativo, è necessario abilitare il contrassegno di traccia 4199. A questo scopo, puoi aggiungere il parametro di avvio -T4199parametro . In alternativa, puoi usare l'istruzione DBCC TRACEON (4199) per una sessione specifica.
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Ultimo aggiornamento cumulativo per SQL Server 2014Ultimo aggiornamento cumulativo per SQL Server 2016
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.