[firebase-br] RES: RES: RES: RES: RES: Ajuda com select

Márcio Henrique Lenharo marciolenharo em gmail.com
Ter Dez 10 11:13:51 -03 2019


Por favor, compartilhe o DDL completo dessas duas tabelas.

Em ter., 10 de dez. de 2019 às 10:49, rodrigo <firebase em dominioinf.com.br>
escreveu:

> Bom dia Marcio, obrigado pela resposta.
>
> Mesmo removendo o distinct e o coalesce conforme sql abaixo:
>
> SELECT PV.CODIGO as CODIGO FROM PEDIDOS P LEFT JOIN
> PAGTOVENDA PV ON (P.CODIGO=PV.CODIGO) WHERE P.CONCLUIU = 'S' AND
> (PV.CONDICAO = 'A Vista' OR PV.CONDICAO = 'Cheque') and (PV.CONCLUIU
> IS NULL OR PV.CONCLUIU = '') AND
> P.COO > 0 AND p.numimpfiscal > 0 and
> char_length(p.numserieecf) > 0 and NOT EXISTS (SELECT 1 FROM CAIXA C
> WHERE C.COO=P.COO AND C.NUMSERIEECF=P.NUMSERIEECF)
>
> Ainda fica o mesmo retorno
>
> PLAN (C INDEX (IDX_CAIXA_COO))
> PLAN JOIN (P INDEX (IDX_PEDIDOS_CONCLUIU), PV INDEX
> (IDX_PAGTOVENDA_CODIGO))
>
> Prepare: 0 ms  Execute: 2 s 360 ms  Fetch: 0 ms
>
> Grato
>
> Enviado do Email para Windows 10
>
> De: Márcio Henrique Lenharo
> Enviado:terça-feira, 10 de dezembro de 2019 08:23
> Para: FireBase
> Assunto: Re: [firebase-br] RES: RES: RES: RES: Ajuda com select
>
> Bom dia..
>
> Se houver índice para o campo "PV.CODIGO", substitua o DISTINCT por GROUP
> BY.
> Se houver índice nos demais campos abaixo do WHERE, remova o COALESCE e
> trate a validação (NOT NULL) e o conteúdo do campo já gravado em tabela.
>
> Certamente vai ajudar.
>
> Att
>
> Em seg., 9 de dez. de 2019 às 14:42, rodrigo <firebase em dominioinf.com.br>
> escreveu:
>
> > Boa tarde Sofia, obrigado pela resposta,
> > Tentei o seu select
> >
> > PLAN (C INDEX (IDX_CAIXA_COO))
> > PLAN SORT (JOIN (P INDEX (IDX_PEDIDOS_CONCLUIU), PV INDEX
> > (IDX_PAGTOVENDA_CODIGO)))
> >
> > Prepare: 15 ms  Execute: 2 s 546 ms  Fetch: 0 ms
> >
> > Tentei já trocar varias posições mas não fluiu muito.
> >
> > Grato
> >
> >
> > Enviado do Email para Windows 10
> >
> > De: Sofia Bonato de Moraes - EES
> > Enviado:segunda-feira, 9 de dezembro de 2019 14:28
> > Para: 'FireBase'
> > Assunto: [firebase-br] RES: RES: RES: Ajuda com select
> >
> > Boa tarde, tenta o seguinte:
> >
> > SELECT DISTINCT PV.CODIGO as CODIGO
> > FROM PEDIDOS P LEFT JOIN pagtovenda pv ON       P.CODIGO=PV.CODIGO
> > WHERE P.CONCLUIU = 'S' AND
> >       PV.CONDICAO IN ('A Vista','Cheque') and
> >       COALESCE(PV.CONCLUIU,'')='' AND
> >       COALESCE(P.COO,0) > 0 AND
> >       coalesce(p.numimpfiscal,0) > 0 and
> >       char_length(p.numserieecf) > 0 and
> >       NOT EXISTS (SELECT 'x' FROM CAIXA C WHERE C.COO=P.COO AND
> > C.NUMSERIEECF=P.NUMSERIEECF) AND
> >
> > Dar uma geral nos índices existentes também ajuda, pra ver se, mudando a
> > ordem dos testes ele aproveita melhor algum outro índice.
> >
> > -----Mensagem original-----
> > De: lista <lista-bounces em firebase.com.br> Em nome de rodrigo
> > Enviada em: segunda-feira, 9 de dezembro de 2019 14:06
> > Para: FireBase <lista em firebase.com.br>
> > Assunto: [firebase-br] RES: RES: Ajuda com select
> >
> > Boa tarde, obrigado pela resposta,
> >
> > Nessa sql que vc alterou aumentou o tempo.
> >
> > PLAN (C INDEX (IDX_CAIXA_COO))
> > PLAN SORT (JOIN (P INDEX (IDX_PEDIDOS_CONCLUIU), PV INDEX
> > (IDX_PAGTOVENDA_CODIGO)))
> >
> > Prepare: 31 ms  Execute: 4 s 922 ms  Fetch: 0 ms
> >
> > Grato
> >
> > Enviado do Email para Windows 10
> >
> > De: Murilo Furquim
> > Enviado:segunda-feira, 9 de dezembro de 2019 14:01
> > Para: FireBase
> > Assunto: Re: [firebase-br] RES: Ajuda com select
> >
> > Eu ainda tentaria colocar a condição com strings por último no where:
> >
> > SELECT DISTINCT PV.CODIGO as CODIGO FROM PEDIDOS P LEFT JOIN PAGTOVENDA
> PV
> > ON (P.CODIGO=PV.CODIGO) WHERE NOT EXISTS (SELECT 1 FROM CAIXA C WHERE
> > C.COO=P.COO AND
> > C.NUMSERIEECF=P.NUMSERIEECF) AND
> >  COALESCE(P.COO,0) > 0 AND coalesce(p.numimpfiscal,0) > 0 and
> > char_length(p.numserieecf) > 0
> >  P.CONCLUIU = 'S' AND (PV.CONDICAO = 'A Vista' OR PV.CONDICAO =
> > 'Cheque') and (PV.CONCLUIU IS NULL OR PV.CONCLUIU = '') AND
> >
> >
> > Em seg., 9 de dez. de 2019 às 11:38, rodrigo <firebase em dominioinf.com.br
> >
> > escreveu:
> > >
> > > Bom dia! Obrigado pela resposta.
> > >
> > > Usando sua sugestão já melhorou bastante,
> > >
> > > SELECT DISTINCT PV.CODIGO as CODIGO FROM PEDIDOS P LEFT JOIN
> > > PAGTOVENDA PV ON (P.CODIGO=PV.CODIGO) WHERE P.CONCLUIU = 'S' AND
> > > (PV.CONDICAO = 'A Vista' OR PV.CONDICAO = 'Cheque') and (PV.CONCLUIU
> > > IS NULL OR PV.CONCLUIU = '') AND
> > >  COALESCE(P.COO,0) > 0 AND coalesce(p.numimpfiscal,0) > 0 and
> > > char_length(p.numserieecf) > 0 and NOT EXISTS (SELECT 1 FROM CAIXA C
> > > WHERE C.COO=P.COO AND C.NUMSERIEECF=P.NUMSERIEECF)
> > >
> > > PLAN (C INDEX (IDX_CAIXA_COO))
> > > PLAN SORT (JOIN (P INDEX (IDX_PEDIDOS_CONCLUIU), PV INDEX
> > > (IDX_PAGTOVENDA_CODIGO)))
> > >
> > > Prepare: 0 ms  Execute: 3 s 0 ms  Fetch: 2 s 953 ms
> > >
> > > Mas eu gostaria de ver se consigo chegar a menos que um segundo.
> > >
> > > Tem mais alguma sugestão?
> > >
> > > Grato
> > >
> > >
> > >
> > > Enviado do Email para Windows 10
> > >
> > > De: Murilo Furquim
> > > Enviado:segunda-feira, 9 de dezembro de 2019 10:48
> > > Para: FireBase
> > > Assunto: Re: [firebase-br] Ajuda com select
> > >
> > > Bom dia.
> > >
> > > Eu inverteria a ordem das condicionais do where para deixar as
> > > comparações de varchar por último. Utilizo o Firebird 2.1 e dá
> > > bastante diferença. Também troque o count por not exists para ver se
> > > dá diferença.
> > >
> > > Em seg., 9 de dez. de 2019 às 08:10, rodrigo
> > > <firebase em dominioinf.com.br> escreveu:
> > > >
> > > > Bom dia!
> > > >
> > > > Tenho o seguinte select
> > > >
> > > > SELECT DISTINCT PV.CODIGO as CODIGO FROM PEDIDOS P LEFT JOIN
> > > > pagtovenda pv ON (P.CODIGO=PV.CODIGO) WHERE P.CONCLUIU = 'S' AND
> > > > (PV.CONDICAO = 'A Vista' OR PV.CONDICAO = 'Cheque') and (PV.CONCLUIU
> > > > IS NULL OR PV.CONCLUIU = '') AND
> > > > COALESCE(P.COO,0) > 0 AND coalesce(p.numimpfiscal,0) > 0 and
> > > > char_length(p.numserieecf) > 0 and (SELECT COUNT(*) FROM CAIXA C
> > > > WHERE C.COO=P.COO AND C.NUMSERIEECF=P.NUMSERIEECF) = 0
> > > >
> > > > E esta tabela tem em torno de 100.000 pedidos esta retornando acima
> > > > de 4 segundos
> > > >
> > > > PLAN (C INDEX (IDX_CAIXA_COO))
> > > > PLAN SORT (JOIN (P INDEX (IDX_PEDIDOS_CONCLUIU), PV INDEX
> > > > (IDX_PAGTOVENDA_CODIGO)))
> > > >
> > > > Prepare: 31 ms  Execute: 4 s 828 ms  Fetch: 0 ms
> > > >
> > > > Alguem teria alguma sugestão de como melhorar a performance?
> > > >
> > > > Grato
> > > >
> > > >
> > > >
> > > > ______________________________________________
> > > > 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
> >
> > ______________________________________________
> > 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
>
> ______________________________________________
> 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