Resumo
Adicione o novo atributo do plano de execução de consultas EstimateRowWithoutRowGoal ao SQL Server 2017 Cumulative Update 3 (CU3) e ao Microsoft SQL Server 2016 Service Pack 2 (SP2).
Quando o Otimizador de Consulta estima o custo de um plano de execução de consultas, geralmente assume que todas as linhas de qualificação de todas as fontes têm de ser processadas. No entanto, algumas consultas fazem com que o Otimizador de Consulta procure um plano que retornará um número menor de linhas mais rapidamente. Isto pode ocorrer se a consulta utilizar uma cláusula TOP, dica de consulta FAST number_rows, uma cláusula IN ou EXISTÊNCIA, ou uma declaração SET ROWCOUNT { @number_var }. Neste caso, o otimizador está a usar um objetivo de linha quando estima 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 é reduzido. Isto porque o plano pressupõe que um número menor de linhas terá de ser processada para atingir o objetivo de linha.
Nota A estimativa que é feita usando o objetivo da linha é aproximada. Se a distribuição real de dados não for uniforme, pode ser inferior ao número real de linhas que têm de ser processadas. Portanto, poderia criar um plano de consulta ineficiente. Como solução alternativa para este problema, pode utilizar a opção de consulta USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') ou a Trace Flag 4138.
Para obter mais informações, consulte Update introduz USE HINT argumento de sugestão de consulta no SQL Server 2016. No entanto, pode ser um desafio 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 das Estimativas Atribuídas para ver quanto o objetivo de linha afeta as estimativas do Query Optimizer.
Nota Se o objetivo de linha não for aplicado a um determinado operador de plano de consulta, este atributo não está incluído.
Mais Informações
Esta atualização está incluída na seguinte atualização cumulativa 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 que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Informações de pacote de serviço para SQL Server
Esta atualização é introduzida nos seguintes pacotes de serviço para o SQL Server:
Os pacotes de serviço são cumulativos. Cada novo pacote de serviços contém todas as correções que se encontram em pacotes de serviços anteriores, juntamente com quaisquer novas correções. A nossa recomendação é aplicar o mais recente pacote de serviços e a mais recente atualização cumulativa para esse pacote de serviços. Não tem de instalar um pacote de serviços anterior antes de instalar o mais recente pacote de serviços. Utilize o Quadro 1 no seguinte artigo para encontrar mais informações sobre o mais recente pacote de serviços e a mais recente atualização cumulativa.
Como determinar o nível de versão, edição e atualização do SQL Server e dos seus componentes
Referências
Conheça a terminologiaque a Microsoft utiliza para descrever atualizações de software.