Resumo
Adicione o novo atributo do plano de execução de consulta EstimateRowsWithoutRowGoal ao SQL Server 2017 Atualização Cumulativa 3 (CU3) e ao Microsoft SQL Server 2016 Service Pack 2 (SP2).
Quando o otimizador de consultas estima o custo de um plano de execução de consultas, ele geralmente pressupõe que todas as linhas qualificadas de todas as fontes devem ser processadas. No entanto, algumas consultas fazem com que o Otimizador de Consultas procure um plano que retornará um número menor de linhas mais rapidamente. Isso poderá ocorrer se a consulta usar uma cláusula TOP , uma dica de consulta FAST number_rows , uma cláusula IN ou EXISTS ou uma instrução SET ROWCOUNT { number | @number\_var } . Nesse caso, o otimizador está usando uma meta de linha ao estimar o plano de consulta. Se o plano de meta de linha for aplicado, o número estimado de linhas no plano de execução de consulta será reduzido. Isso ocorre porque o plano pressupõe que um número menor de linhas terá que ser processado para atingir a meta da linha.
Observação A estimativa feita usando a meta de linha é aproximada. Se a distribuição de dados real não for uniforme, ela poderá ser menor que o número real de linhas que precisam ser processadas. Portanto, ele poderia criar um plano de consulta ineficiente. Como solução alternativa para esse problema, você pode usar a opção de consulta USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') ou o sinalizador de rastreamento 4138.
Para obter mais informações, consulte A atualização introduz o argumento de dica de consulta USE HINT no SQL Server 2016. No entanto, pode ser um desafio identificar em consultas complexas se uma meta de linha é aplicada e o quanto ela afeta a escolha do plano.
Usando o atributo EstimateRowsWithoutRowGoal , você pode comparar os resultados com os do atributo EstimateRows para ver o quanto a meta da linha afeta as estimativas do Otimizador de Consultas.
Observação Se a meta da linha não for aplicada a um operador de plano de consulta específico, esse atributo não será incluído.
Mais informações
Essa atualização está incluída na seguinte atualização cumulativa para o SQL Server:
Atualização cumulativa 3 para o SQL Server 2017
Sobre atualizações cumulativas para o SQL Server:
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o SQL Server:
Atualização cumulativa mais recente do SQL Server 2017
Informações do service pack do SQL Server
Essa atualização é introduzida nos seguintes service packs do SQL Server:
Service Pack 2 para SQL Server 2016
Service Pack 3 para SQL Server 2014
Sobre service packs do SQL Server:
Os service packs são cumulativos. Cada novo service pack contém todas as correções dos service packs anteriores, juntamente com as novas correções. Nossa recomendação é aplicar o service pack mais recente e a atualização cumulativa mais recente para esse service pack. Não é necessário instalar um service pack anterior antes de instalar o service pack mais recente. Use a Tabela 1 do artigo a seguir para encontrar mais informações sobre o service pack mais recente e a atualização cumulativa mais recente.
Como determinar a versão, a edição e o nível de atualização do SQL Server e seus componentes
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.