[firebase-br] SQL Doido
José Mauricio Barbisan Zottis
zottissistemas em gmail.com
Sábado Junho 19 14:07:24 -03 2021
Foi só um teste, como o select é por cliente, ele não fica lento.
fiz um teste colocando no delphi os valores dos parâmetros, aparece os
valores, porém, mesmo declarando manualmente ou via programação o dataType,
na execução não aparece.
estou fazendo o teste com a passagem dos valores diretamente no SQL mas tô
me batendo para formatar corretamente a data que passar a data
Esta dando o erro: Only one operand can be of type TIMESTAMP
Montei o SQL assim:
var vDataI, vDataF : string;
vdataI := FormatDateTime('MM-dd-yyyy',dtpPeriodoColeta1.Date);
vdataF := FormatDateTime('MM-dd-yyyy',dtpPeriodoColeta2.Date);
with qryColetasAgrupadas do
begin
Close;
SQL.Clear;
SQL.Add('select (select d.descricao from descricao_residuos d
where d.codigo = v.cod_descricao)descricao, ');
SQL.Add(' (select sum(f.peso_coletado) from far_mtr f
where f.cod_cliente = v.cod_cliente and f.cod_valores_cliente = v.codigo ');
SQL.Add(' and f.data_coleta between ' + vdataI + ' and ' +
vdataF + ' ) peso ');
SQL.Add(' from valores_cliente v ');
SQL.Add(' where v.cod_cliente = ' + BuscaCOD_CLIENTE.AsString
);
Em sáb., 19 de jun. de 2021 às 13:42, Nobyte X via lista <
lista em firebase.com.br> escreveu:
> Muito lento 2minutos para trazer 20k de registros, isso é por conta de
> executsr no delphi?
>
> Em sáb, 19 de jun de 2021 13:16, José Mauricio Barbisan Zottis via lista <
> lista em firebase.com.br> escreveu:
>
> > o teste sem Cód Cliente
> > Obtidos 23723
> >
> > ------ Info. Desempenho ------
> > Tempo de Preparação = 31ms
> > Tempo de Execução = 1m 56s 672ms
> > Tempo Médio Leitura = 5.072,70 ms
> > Memória Actual = 30.248.424
> > Memória Max = 44.449.920
> > Buffers de Memória = 2.048
> > Leituras do disco para a Memória Intermédia = 140.656
> > Escritas da Memória Intermédia para o disco = 137
> > Leituras da Memória Intermédia = 1.884.583
> >
> >
> > Em sáb., 19 de jun. de 2021 às 12:58, José Mauricio Barbisan Zottis <
> > zottissistemas em gmail.com> escreveu:
> >
> > > Opa, agradeço pelo retorno, o peso que se refere, não acontece, fiz um
> > > teste sem o uso de parâmetros e o retorno foi satisfatório, e olhe que
> a
> > > base é grande.
> > > também fiz o teste com AsString
> > > fiz teste usando cast para varchar, numeric, etc.
> > >
> > > fiz vários SQL, fazendo pequenas Views no Banco e juntando, também nada
> > > funcionou, inverti a lógica e aparece os dados, mas quando rodo no
> > Delphi,
> > > não aparece
> > > O SQL que pelo menos aparece a descrição ´pe este, mas a soma do peso
> não
> > > aparece.
> > > tentei também com between, com <= e <= e nada
> > >
> > > select (select d.descricao from descricao_residuos d where d.codigo =
> > > v.cod_descricao)descricao,
> > > (select sum(f.peso_coletado) from far_mtr f where f.cod_cliente
> =
> > > v.cod_cliente and f.cod_valores_cliente = v.codigo and f.data_coleta >=
> > > :vardataI and f.data_coleta <= :vardataF ) peso,
> > > cast( round((select sum(f.peso_coletado) from far_mtr f where
> > > f.cod_cliente = v.cod_cliente and f.cod_valores_cliente = v.codigo and
> > > f.data_coleta >= :vardataI and f.data_coleta <= :vardataF ),2)as
> > > varchar(30)) peso2
> > > from valores_cliente v
> > > where v.cod_cliente = :varCodCliente
> > >
> > >
> > > Em sáb., 19 de jun. de 2021 às 12:21, Mário Reis via lista <
> > > lista em firebase.com.br> escreveu:
> > >
> > >> Duvido da eficiência desse teu código companheiro. Deve ter um peso
> > >> tremendo. Eu partiri esse query em vários outros mais pequenos e
> > >> dependentes, mas enfim!
> > >> Ainda assim, arriscaria que o problema está aqui:
> > >> *ParamByName('vardataI').AsDate * :=
> > >> dtpPeriodoColeta1.Date;
> > >> ParamByName('vardataI').AsDate
> > >> dtpPeriodoColeta2.Date;
> > >> Não sei que componentes usa, mas tb já tive um problema idêntico e
> > >> resolvi, passando o parâmetro data como AsString
> > >> em vez de AsDate e funcionou. Até hoje faço assim com os componentes
> do
> > >> TIBDatabase... TIBQuery etc...
> > >> P/favor tente e nos diga o resultado.
> > >> Espero ter ajudado. Obrigado
> > >>
> > >> Com os meus melhores cumprimentos
> > >> Mário Agostinho Reis
> > >> 919262146
> > >>
> > >> Esta mensagem contém informação de natureza confidencial e é
> > >> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por
> > engano,
> > >> receber este email agradecemos que não o copie nem o reenvie e que nos
> > >> notifique do ocorrido através do email de resposta.
> > >>
> > >>
> > >> José Mauricio Barbisan Zottis via lista <lista em firebase.com.br>
> > escreveu
> > >> no
> > >> dia sexta, 18/06/2021 à(s) 23:16:
> > >>
> > >> > Pessoal, boa noite.
> > >> > Tenho um SQL que já tentei de tudo quanto é jeito e todas as
> > tentativas
> > >> via
> > >> > IBEx´pert da certo, porém quando passo pro componente no Delphi(7)
> não
> > >> > aparece nada.
> > >> > Alguém saberia o que pode estar acontecendo?
> > >> >
> > >> > o SQL é este:
> > >> >
> > >> > select v.cod_cliente,
> > >> > sum(v.peso_coletado)peso_coletado,
> > >> > v.descricao
> > >> > from
> > >> > (select f.cod_cliente,
> > >> > f.peso_coletado,
> > >> > f.data_coleta,
> > >> > f.cod_valores_cliente,
> > >> > (select dr.descricao from descricao_residuos dr where
> dr.codigo
> > =
> > >> > (select v2.cod_descricao from valores_cliente v2
> > >> > where v2.codigo =
> > >> > f.cod_valores_cliente))descricao
> > >> > from far_mtr f)v
> > >> > where v.cod_cliente = :varCodCliente
> > >> > and v.data_coleta between :vardatai and :vardataf
> > >> > group by v.cod_cliente,
> > >> > v.descricao
> > >> >
> > >> > , no componente chamo assim(Como faço hà anos)
> > >> >
> > >> > with qryColetasAgrup do
> > >> > begin
> > >> > Close;
> > >> > ParamByName('varCodCliente').AsInteger :=
> > >> > qryBuscaCOD_CLIENTE.Value;
> > >> > ParamByName('vardataI').AsDate :=
> > >> > dtpPeriodoColeta1.Date;
> > >> > ParamByName('vardataI').AsDate :=
> > >> > dtpPeriodoColeta2.Date;
> > >> > Prepare;
> > >> > Open;
> > >> > end;
> > >> >
> > >> > --
> > >> > ______________________________________________
> > >> > 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
> > >> >
> > >> ______________________________________________
> > >> 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
> > >>
> > >
> > >
> > > --
> > >
> > >
> >
> > --
> > ______________________________________________
> > 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
> >
> ______________________________________________
> 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