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

rodrigo firebase em dominioinf.com.br
Seg Dez 9 14:42:05 -03 2019


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




Mais detalhes sobre a lista de discussão lista