Resumo
Adicione o novo atributo plano de execução de consulta EstimateRowsWithoutRowGoal à atualização cumulativa 3 (Cu3) do sql Server 2017 e Microsoft SQL Server 2016 Service Pack 2 (SP2).
Quando o otimizador de consulta estima o custo de um plano de execução de consulta, ele geralmente pressupõe que todas as linhas qualificadas de todas as fontes precisam ser processadas. No entanto, algumas consultas fazem com que o otimizador de consultas procure um plano que retorne um número menor de linhas mais rápido. Isso pode ocorrer se a consulta usar uma cláusula Top , rápida number_rows dica de consulta, 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 quando ele estima o plano de consulta. Se o plano de meta da linha for aplicado, o número estimado de linhas no plano de execução da consulta será reduzido. Isso ocorre porque o plano pressupõe que um número menor de linhas precisará ser processado para alcançar a meta da linha.
Observação A estimativa que é feita com o uso de meta de linha é aproximada. Se a distribuição de dados real for não uniforme, pode ser menor do que o número real de linhas que devem ser processadas. Portanto, ele pode criar um plano de consulta ineficiente. Como solução alternativa para esse problema, você pode usar a opção de consulta dica de uso (' DISABLE_OPTIMIZER_ROWGOAL ') ou o sinalizador de rastreamento 4138.
Para obter mais informações, consulte a atualização introduz usar o argumento dica de consulta de dica no SQL Server 2016. No entanto, pode ser desafiador identificar em consultas complexas, seja a aplicação de uma meta de linha e quanto ela afeta a opção de plano.
Ao usar o atributo EstimateRowsWithoutRowGoal , você pode comparar os resultados àqueles do atributo EstimateRows para ver quanto a meta da linha afeta as estimativas do otimizador de consulta.
Observação Se a meta de linha não for aplicada a um operador de plano de consulta específico, esse atributo não será incluído.
Informações adicionais
Esta atualização está incluída na seguinte atualização cumulativa do 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 do SQL Server:
Informações do Service Pack para SQL Server
Esta atualização é introduzida nos seguintes Service Packs para SQL Server:
Service packs são cumulativos. Cada novo Service Pack contém todas as correções que estão em Service Packs anteriores, juntamente com qualquer nova correção. Nossa recomendação é aplicar o Service Pack mais recente e a atualização cumulativa mais recente para esse Service Pack. Você não precisa instalar um Service Pack anterior antes de instalar o Service Pack mais recente. Use a tabela 1 no artigo a seguir para encontrar mais informações sobre o Service Pack mais recente e a atualização cumulativa mais recente.
Como determinar o nível de versão, edição e atualização do SQL Server e seus componentes
Referências
Saiba mais sobre a terminologiaque a Microsoft usa para descrever atualizações de software.