KB4023419 - CORREÇÃO: A consulta com UNION ALL e uma meta de linha pode ser mais lenta no SQL Server 2014 ou versões posteriores quando comparada ao SQL Server 2008 R2

Aplica-se A
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - 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) SQL Server 2016 Service Pack 1

Sintomas

Quando consulta uma vista no Microsoft SQL Server 2014 ou 2016, esta pode demorar muito mais tempo a concluir se a comparar com a execução no SQL Server 2008 R2.

Ao executar uma consulta que utiliza a palavra-chave UNION ALL e um objetivo de linha (como a cláusula TOP N, FAST N ou predicado EXIST), poderá reparar que a execução da consulta é mais lenta no SQL Server 2014 ou em versões posteriores se a comparar com a SQL Server 2008 R2.

Causa

No SQL Server 2008 R2, o Otimizador de Consultas altera a ordem das diferentes partes em UNION ALL se houver uma meta de linha, de modo que a parte mais barata vá primeiro. Isto permite que a consulta conclua a execução mais cedo se as peças mais baratas produzirem o número necessário de linhas, sem continuar a executar peças mais dispendiosas. Essa reordenação não ocorre em versões posteriores do SQL Server.

Resolução

Este problema foi corrigido na seguinte atualização cumulativa para SQL Server:

Atualização cumulativa 7 para SQL Server 2016 RTM

Atualização cumulativa 4 para SQL Server 2016 SP1

Atualização cumulativa 6 para SQL Server 2014 SP2

Observação O Otimizador de Consultas tem de estar ativado para este problema.

Para obter mais informações sobre sinalizadores de otimização de consultas e rastreamento, consulte os seguintes links:

SQL Server Query Optimizer hotfix TF 4199 modelo de serviço

Comandos da consola DBCC e sinalizadores de Rastreio

Acerca das atualizações cumulativas para SQL Server:

Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:

Atualização cumulativa mais recente para o SQL Server 2016

Atualização cumulativa mais recente para o SQL Server 2014

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Referências

Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.