Sintomi
Quando si esegue una query in una visualizzazione in Microsoft SQL Server 2014 o 2016, potrebbe essere necessario molto tempo per il completamento se si confronta l'esecuzione in SQL Server 2008 R2.
Quando si esegue una query che usa UNION ALL e un obiettivo di riga, ad esempio una clausola TOP N, un predicato FAST N o EXISTs, è possibile notare che la query viene eseguita più lentamente in SQL Server 2014 o versioni successive se la si confronta con SQL Server 2008 R2.
Causa
In SQL Server 2008 R2, Query Optimizer modifica l'ordine delle diverse parti in UNION ALL se è presente un obiettivo di riga, in modo che la parte più economica vada per prima. In questo modo, la query deve terminare l'esecuzione in precedenza se le parti meno recenti producono il numero di righe necessario, senza continuare a eseguire parti più costose. Tale riordino non si verifica nelle versioni successive di SQL Server.
Risoluzione
Questo problema è stato risolto con l'aggiornamento cumulativo seguente per SQL Server:
Aggiornamento cumulativo 7 per SQL Server 2016 RTM
Aggiornamento cumulativo 4 per SQL Server 2016 SP1
Aggiornamento cumulativo 6 per SQL Server 2014 SP2
Nota L'ottimizzatore della query deve essere abilitato per questo problema.
Per altre informazioni su Query Optimizer e Trace Flags, vedere i collegamenti seguenti:
Modello di manutenzione di SQL Server Query Optimizer hotfix TF 4199
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:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologiautilizzata da Microsoft per descrivere gli aggiornamenti software.