[firebase-br] Leitura lenta de uma tabela
José Mauricio Barbisan Zottis
zottissistemas em gmail.com
Quinta Fevereiro 18 14:05:07 -03 2021
Plano
PLAN (P INDEX (PK_REF_PESSOAS))
PLAN (C INDEX (FK_REF_DIA_PESREF))
select c.cd_codigo,
c.cd_mes,
c.cd_empresa,
f_nmempresa(c.cd_empresa) nm_empresa,
c.cd_fornecedor,
f_nmpessoa(c.cd_fornecedor)nm_fornecedor,
c.cd_pessoaref,
(select p.nm_usuario from ref_pessoas p where p.cd_codigo =
c.cd_pessoaref)nm_pessoaref,
c.dt_dia,
c.qt_quantidade,
c.vl_unitario,
c.vl_total,
c.vl_fornecedor,
c.vl_totfornec,
c.cd_ccusto,
------------------
c.dt_cadastro,
c.cd_usuario,
c.cd_editor,
c.dt_atualizacao,
c.hr_atualizacao,
f_nmusuario(c.cd_usuario)ds_usuario,
f_nmusuario(c.cd_editor)ds_editor
from ref_dia c
where c.cd_pessoaref = :varCdPessoaRef
and c.dt_dia = :varDia
Em qui., 18 de fev. de 2021 às 12:23, Frederico Godoi via lista <
lista em firebase.com.br> escreveu:
> Coloca o SQL e o plano que a gente pode ajudar melhor;
>
> On Thu, 18 Feb 2021 at 09:56, José Mauricio Barbisan Zottis via lista <
> lista em firebase.com.br> wrote:
>
> > 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
> >
>
>
> --
> Frederico Godoi
> ______________________________________________
> 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
>
--
Mais detalhes sobre a lista de discussão lista