Firedac lento ao abrir a primeira vez

Delphi

Firebird

FireDAC

08/11/2022

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?
Multistore Treinamento

Multistore Treinamento

Curtidas 0

Respostas

Paulo

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

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

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
POSTAR