KB3167159 - FIX: la query viene eseguita lentamente quando SQL Server usa l'aggregazione hash nel piano di query

Si applica a
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) 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)

Sintomi

La query potrebbe essere eseguita lentamente se si verificano le condizioni seguenti:

  • La query usa aggregazioni come group by.
  • SQL Server usa l'aggregazione hash nel piano di query.
  • Il numero stimato di valori distinti è molto inferiore al numero effettivo di valori distinti per l'aggregato.

Quando si verifica questo problema, viene visualizzato un evento di avviso hash se si esegue la traccia del profiler o dell'evento esteso.

Causa

Questo problema si verifica perché SQL Server sottostima la quantità di memoria concessa necessaria. Ciò comporta la distribuzione dei risultati intermedi a tempdb.

Risoluzione

Il problema è stato risolto per la prima volta nell'aggiornamento cumulativo seguente di SQL Server:

Nota: è necessario abilitare il flag di traccia 9410 per attivare questa correzione.

Consiglio: installare l'aggiornamento cumulativo più recente per SQL Server

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. È consigliabile scaricare e installare gli aggiornamenti cumulativi più recenti per SQL Server:

      

Riferimenti

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