[firebase-br] Leitura lenta de uma tabela
José Mauricio Barbisan Zottis
zottissistemas em gmail.com
Quinta Fevereiro 18 09:55:25 -03 2021
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;
--
Mais detalhes sobre a lista de discussão lista