A consulta Sql demora muito para ser executada

1

Eu tenho um aplicativo que está processando muitos itens de um banco de dados sql. Ele corre bem e depois de cerca de 4 milhões de itens processados, ele começa a desligar.

Usando o criador de perfil do SQL Server, rastreei o problema para uma consulta que salta de uma duração de cerca de 1.000 para uma duração de 2.000.000.

Uma versão simplificada da consulta é assim:

selecione t.field1, t.field2 da tabela1 t onde t.id em (selecione o topo 1000 t2.id da tabela2 t2 onde t2.id > ordem XXXX por t2.id)

Alguma idéia de por que pode estar demorando tanto para ser executada?

    
por Kevin 24.04.2014 / 21:29

2 respostas

5

Este é um exemplo escolar de estatísticas obsoletas - uma consulta é bem executada e depois, sem quaisquer razões óbvias, torna-se muito lenta.

As estatísticas do SQL Server tornam-se imprecisas quando os bancos de dados estão em uso e ocorrem muitas transações.

A solução de problemas começa com a análise da consulta lenta. Se a diferença entre o número estimado e real de linhas em um plano de execução de consulta for maior que 10%, as estatísticas serão obsoletas. Como o desempenho será afetado depende da consulta e do plano de execução. As mesmas estatísticas obsoletas podem ter efeito diferente em duas consultas diferentes.

Não há uma visualização de gerenciamento dinâmico que possa indicar estatísticas imprecisas e, às vezes, é mais fácil atualizar estatísticas e ver se isso ajuda, do que analisar a situação passo a passo.

Você pode encontrar mais informações sobre estatísticas aqui: Estatísticas

    
por 27.04.2014 / 14:48
0

Tudo o que era necessário era atualizar as estatísticas .

    
por 25.04.2014 / 20:08

Tags