Consulta SQL muito lenta na primeira execucao no Delphi

Delphi

31/03/2008

Tenho uma consulta SQL muito lenta na primeira execucao rodando no Delphi. Apenas na primeira execução.

Nao importa o componente TQuery, TStoreProcedure rodando uma procedure que retorna um result set

A lentidão é apenas no Delphi, pois rodando direto no banco ou utilitario de banco ela roda rapido desde a primeira execucao !!

Que fazer ? alguém tem alguma dica ?


Lulatedesco

Lulatedesco

Curtidas 0

Respostas

Brunolspp

Brunolspp

31/03/2008

Qual o banco de dados?

Quando vc faz a consulta, a conexão com o banco já está estabelecida?


GOSTEI 0
Lulatedesco

Lulatedesco

31/03/2008

Banco SQL Server;
A consulta ja esta estabelecida sim.
Conexao via BDE mesmo.
Delphi 5


GOSTEI 0
Alderico.dias

Alderico.dias

31/03/2008

Amigo tente instalar o client do SQL-Server nesta máquina ou driver do SQL-Server para conexão, provavelmente deve ser algum problema de conexão entre o BDE e SQL-SERVER. Caso contrário tente criar uma conexão ODBC.
Boa sorte....


GOSTEI 0
Brunolspp

Brunolspp

31/03/2008

Então pode ser o cache do BDE.

Amigo, o BDE está descontinuado a mais de anos e não sofre atualizações. Mude esta consulta para usar ADO com ClientDataSet, vai ficar bem mais rápido com certeza.

Esta lentidão pode ser devido a forma de construção no BDE, você está usando Query para isso? Se sim, ela precisa estar com o cachê desabilitado, se você precisa alterar dados com ela é recomendável que utilize um updatesql ao invés de usar a query como uma table. Fica bem mais rápido. Outra coisa pode ser configuração de cachê e detalhes do BDE que não sei nem mais como fazer.

Por que você não aproveita a promoção de 60¬ de desconto do Delphi e atualiza a sua versão, sai mais barato que um upgrade e você não perde sua licença de Delphi 5, pois você comprará um new user com o preço menor do que upgrade.

A migração dos aplicativos é totalmente transparente, pois é 100 ¬ compatível o código entre as versões.


GOSTEI 0
Lulatedesco

Lulatedesco

31/03/2008

Bruno e Alderico.dias

De antemao agradeço a atencao dispensada.

Vamos ao porems.

Realmente o DBE tá morto e melhor seria mesmo o D7.
Atualmente eu uso o DOA ( Direct Oracle Acess ) para acessar o Oracle e o IBX para o Firebird / Interbase.

Acontece que isto esta acontecendo numa [b]nova rotina[/b]
que tive que implementar num [b]sistema antigo[/b], desenvolvido em 1999, e por isso mesmo, respeitando a regra basica [i]´se nao tem problema, nao mexa !!´[/i] nao quero mudar todo o sistema apenas por esta consulta. Até porque é algo feito como uma cortesia.
Nao quero queimar muita pestana/neuronio nisso.

Porem preciso resolve-lo !!

Em caso de acesso pelo ADO ou ClientDataSet poderiam me informa como faze-lo ?

Muito agradecido.


GOSTEI 0
Brunolspp

Brunolspp

31/03/2008

Coloca um ADO Connection para conectar no banco, depois um adodataset com o comando sql, um datasetprovider ligado ao adodataset e um clientdataset ligado ao provider, e pronto.

Mais exemplos voce terá no meu link de downloads gratuitos http://cc.codegear.com/author/795118

Sobre migrar, não digo ir para o Delphi 7, mas sim o 2007, só em compilar a aplicação, já leva 20¬ a mais de performance sem falar em vários problemas de memória e leak resolvidos, alem de outros recursos.

Aqui no forum tem um link com os vídeos.

Espero que ajude.


GOSTEI 0
Lulatedesco

Lulatedesco

31/03/2008

OK. Funcionando esta. E rapido !!
Acontece que determinado momento,
apos abrir e fechar o dataset varias vezes acontece o erro
´[i]BOF e EOF sao verdadeiros , ou o registro atual foi excluido . A operação solicitada pelo aplicativo requer um registro atual.[/i]´
e se insistirmos ele dá o macabro erro ´[i]falha catastrofica[/i]´

Ouvi falar em atualizar o MDAC p versao 2,7 ou superior e atualizar o ADO

Alguem pode me ajudar ?


GOSTEI 0
Lulatedesco

Lulatedesco

31/03/2008

Na verdade os bugs do ADO no Delphi5 somente se solucionam com a aplicação do d5adoupdate2.exe ( Update Pack para o ADO no D5 )

O Delphi5 ADO Update Pack 2 pode ser encontrado em
http://info.borland.com/devsupport/delphi/mdac26.html


GOSTEI 0
POSTAR