FIX: Query runs slowly when SQL Server uses hash aggregate in the query plan

Applies to: SQL Server 2014 EnterpriseSQL Server 2014 EnterpriseSQL Server 2014 Developer More

Symptoms


Your query may run slowly if the following conditions are true:
  • The query uses aggregates such as group by.
  • SQL Server uses hash aggregate in the query plan.
  • The estimated number of distinct values is much lower than the actual number of distinct values for the aggregate.
When this issue occurs, you will see a hash warning Event if you do Profiler or Extended Event tracing.

Cause


This issue occurs because SQL Server underestimates the amount of memory grant needed. This results in intermiedate results spilling to tempdb.

Resolution


The issue was first fixed in the following cumulative update of SQL Server: Note You have to enable trace flag 9410 to activate this fix.

References


Learn about the terminology that Microsoft uses to describe software updates.