Se você atualizar as estatísticas em tabelas que nunca foram atualizadas (não pergunte por que elas nunca foram atualizadas), o SQL Server atualiza automaticamente os planos de execução com base nas estatísticas desatualizadas? Se não, qual é a melhor abordagem para fazê-lo?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Se você atualizar as estatísticas em uma tabela que não sofreu nenhuma modificação desde a atualização de estatísticas anterior, seus planos de execução não serão invalidados.
Se você atualizar as estatísticas E os dados foram alterados entre esta e a atualização de estatísticas anterior, eles serão invalidados se o banco de dados tiver a
AUTO_UPDATE_STATISTICS
opção de banco de dados definida comoON
. Observe que os planos afetados não são recompilados imediatamente; cada plano será recompilado na próxima vez que for recuperado do cache para execução.Veja este post de Kendra Little: Atualizar estatísticas causa uma recompilação se nenhum dado for alterado?
E este post de Kimberly Tripp referenciando um item de conexão não mais disponível:
Veja também esta postagem de Erin Stellato: Estatísticas e recompilações que fazem referência a esta página de documentação do MSDN
Portanto, se você quiser ter certeza absoluta de que seus planos para essas tabelas foram recompilados, você terá que recompilá-los usando