Resumo
Adicione o novo atributo do plano de execução de consultas EstimateRowsWithoutRowGoal ao SQL Server Atualização Cumulativa 3 (CU3) de 2017 e ao Microsoft SQL Server Service Pack 2 (SP2) de 2016.
Quando o Otimizador de Consultas estima o custo de um plano de execução de consultas, normalmente pressupõe que todas as linhas elegíveis de todas as origens têm de ser processadas. No entanto, algumas consultas fazem com que o Otimizador de Consultas procure um plano que devolva um número menor de linhas mais rapidamente. Isto pode ocorrer se a consulta utilizar uma cláusula TOP , uma sugestão de consulta FAST number_rows , uma cláusula IN ou EXISTS ou uma instrução SET ROWCOUNT { number | @number\_var } . Neste caso, o otimizador está a utilizar um objetivo de linha quando estima o plano de consulta. Se o plano de objetivo de linha for aplicado, o número estimado de linhas no plano de execução de consultas será reduzido. Isto deve-se ao facto de o plano assumir que um número menor de linhas terá de ser processado para atingir o objetivo da linha.
Nota A estimativa efetuada através da utilização do objetivo de linha é aproximada. Se a distribuição de dados real não for uniforme, poderá ser inferior ao número real de linhas que têm de ser processadas. Por conseguinte, pode criar um plano de consulta ineficiente. Como solução para este problema, pode utilizar a opção de consulta UTILIZAR SUGESTÃO ('DISABLE_OPTIMIZER_ROWGOAL') ou Sinalizador de Rastreio 4138.
Para obter mais informações, veja Update introduces USE HINT query hint argument in SQL Server 2016 (Atualizar apresenta o argumento UTILIZAR sugestão de consulta HINT no SQL Server 2016). No entanto, pode ser difícil identificar em consultas complexas se um objetivo de linha é aplicado e quanto afeta a escolha do plano.
Ao utilizar o atributo EstimateRowsWithoutRowGoal , pode comparar os resultados com os do atributo EstimateRows para ver quanto objetivo de linha afeta as estimativas do Otimizador de Consultas.
Nota Se o objetivo de linha não for aplicado a um operador de plano de consulta específico, este atributo não será incluído.
Mais Informações
Esta atualização está incluída na seguinte atualização cumulativa para SQL Server:
Atualização Cumulativa 3 para SQL Server 2017
Acerca das atualizações cumulativas para SQL Server:
Cada nova atualização cumulativa para SQL Server contém todas as correções e todas as correções de segurança incluídas na atualização cumulativa anterior. Consulte as atualizações cumulativas mais recentes para SQL Server:
Atualização cumulativa mais recente do SQL Server 2017
Informações do service pack para SQL Server
Esta atualização é introduzida nos seguintes service packs para SQL Server:
Service Pack 2 para SQL Server 2016
Service Pack 3 para SQL Server 2014
Acerca dos service packs para SQL Server:
Os service packs são cumulativos. Cada novo service pack contém todas as correções que estão em service packs anteriores, juntamente com quaisquer correções novas. A nossa recomendação é aplicar o service pack mais recente e a atualização cumulativa mais recente para esse service pack. Não tem de instalar um service pack anterior antes de instalar o service pack mais recente. Utilize a Tabela 1 no artigo seguinte para encontrar mais informações sobre o service pack mais recente e a atualização cumulativa mais recente.
Referências
Saiba mais sobre a terminologia que a Microsoft utiliza para descrever as atualizações de software.