Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Mourão

Adicionar chaves primárias em tabelas deixa as consultas mais lentras

Recommended Posts

Olá, boa tarde!

 

Estou com um problemão...

 

Peguei umas páginas em ASP para fazer manutenção por elas estarem lentas, e logo fui fazer a manutenção na base de dados dela, já que não possuia nenhuma chave primária.

 

Acontece que quando adiciono as primary keys, a página fica ainda mais lenta!

 

Fiz testes definindo e removendo as chaves e isso realmente acontece!

 

O que explica isso? Desconsiderem possibilidade de resultados já estarem em cache...

 

A consulta é feita por SQL dentro do código ASP, e não por stored procedure.

 

Obrigadao!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Havia indices anteriores a criação PK na tabela que foram removidos ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual operação fica mais lenta ?

 

Insert , Select , todas ?

 

No SqlServer existem estatísticas como no Oracle ?

 

Realmente , não faz o menor sentido o fato que você relata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a estrutura das tabelas envolvidas neste SELECT? Se puder, poste também o comando SELECT.

Quanto de memória possui o servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando problemático é esse:

 

 

select EG.eg_nl, EG.eg_dhf, EG.eg_quant, EG.eg_dhi, grnews.gr_nome, grnews.gr_id

from EG

inner join GRNEWSLETTER grnews

ON grnews.gr_id = EG.eg_gr

where eg_nl = CÓDIGO

 

Isso é executado em um loop e é usado para montar uma tabela.

 

Só são executados comandos SELECT na página inteira e eu adicionei também o relacionamento do INNER JOIN.

 

Uso MSSQL 2000 e é executado em um servidor robusto que roda várias aplicações.

 

Sem as chaves e relacionamentos, a rotina toda é executada em aproximandamente 20 segundos. Com elas, em 20.

 

Eu sei que o que relatei não faz sentido, e isso que me deixa mais louco! rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais os tipos dos dados de retorno e da relação? Quantos registros são retornados nesta página ASP? O comando executado diretamente no SQL leva o mesmo tempo ou é mais rápido? Você tem o plano de execução desta query?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser , mas vale a máxima :

 

Funcionou, deixa queito ....

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, não sei bem o que aconteceu...

 

Mas eu restaurei o backup do banco e defini novamente as chaves e relacionamentos e o problema se resolveu...

 

Agradeço a todos!

 

 

 

Estatísticas, fragmentação, ??? ... alguém arrisca?

 

 

 

 

Qdo se restaura o bkp ele refaz os indices (reindexacao das tabelas), libera mais espaço, atualiza estatistica, e mais algumas manutencoes preventivas. Pode ser por isso que ficou mais rapido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.