FIX: Query performance issues when new cardinality estimator is enabled in SQL Server 2014

Applies to: SQL Server 2014 DeveloperSQL Server 2014 DeveloperSQL Server 2014 Enterprise

Symptoms



Assume that you have enabled the new cardinality estimatorin Microsoft SQL Server 2014. When you run a query that contains join statements, you may encounter the following issues:
  • Some queries take significantly longer time to compile, especially when the query has a large number of joins. The compile time may keep growing significantly with the growing of joins.
  • When the join predicate uses other conditions than equality or a combination of equalities, the estimated number of rows of specific types in joins differs from the actual number of rows that are processed. In this situation, the query performance decreases, and because the query requests a large memory grant, the overall server performance decreases.

Resolution


Service pack information

To resolve this issue, obtain Service Pack 1 for SQL Server 2014.
For more information about SQL Server 2014 Service Pack 1 (SP1), see bugs that are fixed in SQL Server 2014 Service Pack 1 .





Note To make the fix take effect for the second issue described in this article, enable trace flag 4199.

Workaround


To work around these issues, use the old cardinality estimator by either setting the database compatibility level to a value less than 120, or enabling trace flag 9481 at global, session, or query level.

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.