Consulta SQL muito lenta na primeira execucao no Delphi
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 ?
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
Curtidas 0
Respostas
Brunolspp
31/03/2008
Qual o banco de dados?
Quando vc faz a consulta, a conexão com o banco já está estabelecida?
Quando vc faz a consulta, a conexão com o banco já está estabelecida?
GOSTEI 0
Lulatedesco
31/03/2008
Banco SQL Server;
A consulta ja esta estabelecida sim.
Conexao via BDE mesmo.
Delphi 5
A consulta ja esta estabelecida sim.
Conexao via BDE mesmo.
Delphi 5
GOSTEI 0
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....
Boa sorte....
GOSTEI 0
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.
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
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.
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
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.
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
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 ?
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
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
O Delphi5 ADO Update Pack 2 pode ser encontrado em
http://info.borland.com/devsupport/delphi/mdac26.html
GOSTEI 0