Planos de consulta alteram pior desempenho no SQL Server 2014

10

Recentemente, atualizamos nosso servidor do SQL Server 2008R2 para o SQL Server 2014. Temos uma consulta que foi bem executada no 2008R2, mas agora em 2014 é incrivelmente mais lenta e com um plano de execução ruim.

Eu fiz vários testes ...

  1. Alterne o banco de dados 2014 de volta ao modo de compatibilidade 2008/2012.
  2. Teste a consulta usando Paginação.

Os dois resultaram na consulta da mesma forma e com rapidez do SQL Server 2008R2.

Por que o plano é tão ruim e a consulta é executada por tanto tempo no SQL Server 2014?

Estimado / Real

Esta imagem mostra 2 consultas, uma usando número de propriedade como foi executada no 2008R2 e a segunda é a correção com paginação. Ambos foram executados em 2014, ambos muito diferentes, mas em 2008 vemos o mesmo desempenho como se usássemos paginação em 2014.

Jeff
fonte

Respostas:

7

Isso não é um problema, é por design e é considerado uma melhoria de desempenho.

Se suas consultas não forem executadas conforme o esperado, você precisará abordar isso no código do seu banco de dados / aplicativo.

Você pode forçar o antigo estimador de carnalidade usando o sinalizador de rastreamento 9481 no nível do servidor, da sessão ou da consulta (usando OPTION (QUERYTRACEON 9481)). Isso o forçará, independentemente do nível de compatibilidade do banco de dados.

Há também uma tonelada de informações que a equipe de CSS postou aqui .

Uma postagem mais detalhada sobre o Cardanility Estimator e as alterações em torno desse processo no SQL Server 2014, inclui exemplo.

Paul White 9
fonte
Isso soa como uma desculpa ruim para algo deu errado
dvdmn