Tenho uma consulta que atinge uma tabela de 1,4 bilhão de linhas.
Tudo funciona bem com essa consulta, em menos de um segundo.
Então, uma vez a cada 5 dias, mais ou menos, as estatÃsticas de atualização automática entram em ação e a consulta começa a ser executada por quase 60 segundos. Ela adota um plano diferente.
Verifiquei e quando as estatÃsticas de atualização automática são ativadas, a taxa de amostragem é inferior a 1% da tabela.
Agora, minha pergunta é: uma atualização automática de estatÃsticas pode fazer com que o otimizador escolha um plano pior do que o anterior?
Posso ver que as estimativas do plano ruim são muito diferentes das do plano bom.
Bom plano:
Plano Ruim:
As estimativas estão claramente erradas para o plano ruim e, ainda assim, a quantidade de linhas retornadas pela consulta é a mesma.
Neste ponto, estou tentando confirmar se uma atualização automática de estatÃsticas pode fazer isso?
O que estou tentando agora é fazer uma atualização de estatÃsticas com uma amostra de 10% e ver o que acontece.
Atualização: Concluà uma atualização de estatÃsticas com taxa de amostragem de 10% e as consultas estão indo bem novamente.
Tornei isso uma tarefa a ser executada regularmente.
Claramente pode. Você está vivenciando isso atualmente.
Para algumas tabelas maiores, a taxa de amostragem padrão é muito baixa.
Se você estiver no SQL Server 2016 ou superior, você pode criar ou atualizar estatÃsticas com a
PERSIST_SAMPLE_PERCENT
sintaxe para substituir o método padrão e manter uma taxa de amostragem mÃnima. Depende apenas de você descobrir o que isso precisa ser.Se você estiver usando uma versão mais antiga ou se o procedimento acima não funcionar para você devido a outras interações, você pode atualizar as estatÃsticas
NORECOMPUTE
e lidar com as atualizações de estatÃsticas manualmente em uma taxa de amostragem que você achar ideal.