[firebase-br] Leitura lenta de uma tabela

Wanderlei Borges wanderleiborges em gmail.com
Quinta Fevereiro 18 11:33:24 -03 2021


Bom dia.
Se vc não fizer nenhum controle de atualização da grid, ela pode estar
sendo atualizada em cada loop, e isso pode estar causando a demora.
Minha recomendação é que vc desligue a autalização da grid antes do loop e
religue depois do final do loop.
Algo assim:

grid.BeginUpdate;
while not tabela.eof do
begin
  ...
end;
grid.EndUpdate;

Espero ter ajudado.


<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Livre
de vírus. www.avg.com
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

Em qui., 18 de fev. de 2021 às 09:56, José Mauricio Barbisan Zottis via
lista <lista em firebase.com.br> escreveu:

> Pessoal, bom dia.
>
> tenho um controle de refeições que é feito dentro de um determinado
> período.
> Faço um loop na tabela de usuários das refeições e verifico se ele é
> fixo(come todos os dias) ou variável(de vez em quando).
> carrego tudo em um StringGrig
> o Que acontece é que a tabela de Dias, para cada usuário dentro do período
> é de no máximo 21 dias, e para montar a grade está levando muito tempo.
>
> para cada usuário leva 5 segundos para ler os 21 dias, isso é normal?
>
> Alguém teria uma Dica? Desde já agradeço.
> Uso o FB 3.0/Delphi 10.4(Sidney) e Firedac
>
> a tabela, acredito que está modelada de acordo.
> CREATE GENERATOR GEN_REF_DIA_ID;
>
> CREATE TABLE REF_DIA (
>     CD_CODIGO       PK NOT NULL /* PK = INTEGER NOT NULL */,
>     CD_EMPRESA      PK /* PK = INTEGER NOT NULL */,
>     CD_MES          PK /* PK = INTEGER NOT NULL */,
>     CD_FORNECEDOR   PK /* PK = INTEGER NOT NULL */,
>     CD_PESSOAREF    PK /* PK = INTEGER NOT NULL */,
>     DT_DIA          DATAS /* DATAS = DATE NOT NULL */,
>     QT_QUANTIDADE   QUANTIA /* QUANTIA = DOUBLE PRECISION NOT NULL CHECK
> (VALUE >= 0.00) */,
>     VL_UNITARIO     MOEDA NOT NULL /* MOEDA = NUMERIC(18,2) DEFAULT 0 */,
>     VL_TOTAL        NUMERIC(18,4) COMPUTED BY
> ((CAST(coalesce(QT_QUANTIDADE,0)  * coalesce(VL_UNITARIO,0) AS
> NUMERIC(18,4) ))),
>     VL_FORNECEDOR   MOEDA NOT NULL /* MOEDA = NUMERIC(18,2) DEFAULT 0 */,
>     VL_TOTFORNEC    NUMERIC(18,4) COMPUTED BY
> (((CAST(coalesce(QT_QUANTIDADE,0)  * coalesce(VL_FORNECEDOR,0) AS
> NUMERIC(18,4) )))),
>     CD_CCUSTO       PK /* PK = INTEGER NOT NULL */,
>     DT_CADASTRO     DATAS /* DATAS = DATE NOT NULL */,
>     CD_USUARIO      PK /* PK = INTEGER NOT NULL */,
>     CD_EDITOR       PK /* PK = INTEGER NOT NULL */,
>     DT_ATUALIZACAO  DATAS /* DATAS = DATE NOT NULL */,
>     HR_ATUALIZACAO  TEMPO /* TEMPO = TIME NOT NULL */
> );
>
> /****                          Unique constraints
>  ****/
> ALTER TABLE REF_DIA ADD CONSTRAINT UNQ_REF_DIA UNIQUE (CD_EMPRESA,
> CD_FORNECEDOR, CD_PESSOAREF, DT_DIA);
>
>
> /****                             Primary keys
> ****/
> ALTER TABLE REF_DIA ADD CONSTRAINT PK_REF_DIA PRIMARY KEY (CD_CODIGO);
>
> /****                             Foreign keys
> ****/
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_CC FOREIGN KEY (CD_CCUSTO)
> REFERENCES ADM_CCUSTOS (CD_CUSTO) ON UPDATE CASCADE;
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_EDT FOREIGN KEY (CD_EDITOR)
> REFERENCES ADM_USUARIO (CD_USUARIO) ON UPDATE CASCADE;
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_EMP FOREIGN KEY (CD_EMPRESA)
> REFERENCES GER_EMPRESA (CD_EMPRESA) ON UPDATE CASCADE;
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_MES FOREIGN KEY (CD_MES)
> REFERENCES REF_MES (CD_CODIGO) ON DELETE CASCADE ON UPDATE CASCADE;
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_PES FOREIGN KEY
> (CD_FORNECEDOR) REFERENCES PES_PESSOA (CD_PESSOA) ON UPDATE CASCADE;
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_PESREF FOREIGN KEY
> (CD_PESSOAREF) REFERENCES REF_PESSOAS (CD_CODIGO) ON UPDATE CASCADE;
> ALTER TABLE REF_DIA ADD CONSTRAINT FK_REF_DIA_USU FOREIGN KEY (CD_USUARIO)
> REFERENCES ADM_USUARIO (CD_USUARIO) ON UPDATE CASCADE;
>
> --
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>

<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Livre
de vírus. www.avg.com
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>


Mais detalhes sobre a lista de discussão lista