Firedac lento ao abrir a primeira vez
Boa tarde pessoal, tenho um projeto no unigui, que utiliza o firedac para acessar um banco de dados firebird.
Fazendo alguns testes percebi que a primeira vez que dou um open no tfdquery, ele está demorando bastante tempo para exibir o resultado em um unidbgrid (mesmo utilizando um filtro para não trazer nenhum registro).
A partir da segunda consulta, com o mesmo tipo de filtro este processo se torna bem mais rápido.
Tentei alterar a opção MetaData de FetchOptions.Items da FDQuery.
Conforme este post https://www.devmedia.com.br/forum/firedac-lento/533107
Mas não obtive sucesso, continuou lento a primeira consulta... Alguém poderia me dar uma dica de como melhorar essa questão?
Fazendo alguns testes percebi que a primeira vez que dou um open no tfdquery, ele está demorando bastante tempo para exibir o resultado em um unidbgrid (mesmo utilizando um filtro para não trazer nenhum registro).
A partir da segunda consulta, com o mesmo tipo de filtro este processo se torna bem mais rápido.
Tentei alterar a opção MetaData de FetchOptions.Items da FDQuery.
Conforme este post https://www.devmedia.com.br/forum/firedac-lento/533107
Mas não obtive sucesso, continuou lento a primeira consulta... Alguém poderia me dar uma dica de como melhorar essa questão?
Multistore Treinamento
Curtidas 0
Respostas
Paulo
08/11/2022
Provavelmente o problema esteja na sua consulta e não no firedac ou outra coisa. Testa o select direto no banco e veja se o resultado é o mesmo. Posta seu select.
GOSTEI 0
Multistore Treinamento
08/11/2022
Provavelmente o problema esteja na sua consulta e não no firedac ou outra coisa. Testa o select direto no banco e veja se o resultado é o mesmo. Posta seu select.
to usando macros no meu select, alterando o valor dos dois macros para 0=0
SELECT * FROM ORDEMSERVICO WHERE (!filtro) and (!dataLimite)
no baco vai bem rápido, a lentidão é apenas no primeiro open, a partir do segundo ele fica bem mais rápido.
GOSTEI 0
Paulo
08/11/2022
Provavelmente o problema esteja na sua consulta e não no firedac ou outra coisa. Testa o select direto no banco e veja se o resultado é o mesmo. Posta seu select.
to usando macros no meu select, alterando o valor dos dois macros para 0=0
SELECT * FROM ORDEMSERVICO WHERE (!filtro) and (!dataLimite)
no baco vai bem rápido, a lentidão é apenas no primeiro open, a partir do segundo ele fica bem mais rápido.
As consultas posteriores são mais rapidas pois o banco cria cache. Não é recomendado utilizar select *, traga apenas os campos necessarios. Crie indice na tabela, apenas nos campos necessarios, indice de mais deixa o banco lento.
Presumindo que vc esteja usando o ibexpert.
Desconecta do banco.
Conecta.
Executa o select.
Veja quanto tempo demorou.
Faça o mesmo com sua aplicação.
Veja quanto tempo demora.
Na maioria dos casos, a lentidão está na forma como a consulta é executada.
GOSTEI 0