[firebase-br] RES: Dúvida em Select com Sub-select

Moacir Antonio Kuhn moacir em softin.com.br
Qui Mar 9 17:15:49 -03 2017


Pra conseguir performance, crie  um índice na tabela tb_cli_pj pelo campo
CNPJ. Caso contrário, ele vai 'varrer' a tabela inteira até chegar no
registro desejado.

Quaisquer dúvida/questionamento estou a disposição.
Atenciosamente,



Moacir Antônio Kuhn
Analista
(47) 3437-3312 | www.softin.com.br
Rua Iririú, 847 - Saguaçu - 89221-515 









Universo colaborativo de soluções para serviços.










-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Renan Rogowski
Pozzo
Enviada em: quinta-feira, 9 de março de 2017 17:03
Para: FireBase
Assunto: Re: [firebase-br] Dúvida em Select com Sub-select

Obrigado pela resposta Kelver.

Tentei da seguinte forma:
*select * from v_contas_receber vcr where exists (select tcp.id_cliente*
*                                                 from tb_cli_pj tcp*
*                                                 where tcp.cnpj = '*
23.335.999/0001-01*' and tcp.id_cliente = vcr.id_cliente)*

Contudo, a demora permaneceu.

Abraço,
Renan Rogowski Pozzo

*"E a paz de Deus, que excede todo o entendimento, guardará os vossos
corações e os vossos pensamentos em Cristo Jesus." Filipenses 4.7*

Em 9 de março de 2017 15:35, Kelver Merlotti <kmerlotti em gmail.com> escreveu:

> Troque o "where in" por "where exists"
> Abraços,
>
> Em qui, 9 de mar de 2017 às 15:20, Renan Rogowski Pozzo < 
> renanrpozzo em gmail.com> escreveu:
>
> > Boa tarde.
> > Estou realizando dois selects em uma view:
> >
> > *1* - select * from v_contas_receber where id_cliente in (1);
> > *2* - select * from v_contas_receber where id_cliente in (select
> id_cliente
> > from tb_cli_pj where cnpj = '23.335.999/0001-01');
> >
> > O número *1* é instantâneo.
> > O número *2* leva em torno de 35 segundos, sendo que o sub-select 
> > retorna apenas o id "1".
> >
> > Alguém saberia me dizer o porque dessa diferença usando o sub-select ?
> >
> > Os plans e performances, respectivamente, são esses:
> >
> > *1 - Plan*
> > PLAN (TB_TEMP_MARCADO INDEX (FK_MODULO_MARCADO)) PLAN SORT (JOIN 
> > (JOIN (JOIN (JOIN (JOIN (JOIN (JOIN (JOIN (JOIN (V_CONTAS_RECEBER 
> > TCR TB_CONTA_RECEBER INDEX (FK_CLIENTE_CTAREC), V_CONTAS_RECEBER TPO 
> > INDEX (TB_PORTADOR_PK), V_CONTAS_RECEBER TCL TB_CLIENTE INDEX 
> > (TB_CLIENTES_PK)), V_CONTAS_RECEBER TPJ TB_CLI_PJ INDEX 
> > (PK_TB_CLI_PJ)), V_CONTAS_RECEBER TPF TB_CLI_PF INDEX (FK_CLI_PF)), 
> > V_CONTAS_RECEBER TCB TB_CTAREC_BAIXA INDEX (FK_CONTA_RECEBER)), 
> > V_CONTAS_RECEBER TCC TB_CUPOM_CTAREC INDEX (FK_CTAREC_CUPOM)), 
> > V_CONTAS_RECEBER TNC TB_NFV_CTAREC INDEX (FK_CTAREC_NFVENDA)), 
> > V_CONTAS_RECEBER TBO TB_CTAREC_BOLETO INDEX (FK_CTAREC_BOLETO)), 
> > V_CONTAS_RECEBER TCA INDEX (UNQ_TB_CTAREC_ADIC_ID_CTAREC)), 
> > V_CONTAS_RECEBER TCSS INDEX (PK_TB_CTAREC_STATUS_SIS_ID)))
> > ------ Performance info ------
> > Prepare time = 16ms
> > Execute time = 0ms
> > Avg fetch time = 0,00 ms
> > Current memory = 18.250.092
> > Max memory = 208.673.692
> > Memory buffers = 2.048
> > Reads from disk to cache = 44
> > Writes from cache to disk = 0
> > Fetches from cache = 278
> >
> >
> > *2 - Plan*
> > PLAN (TB_CLI_PJ INDEX (PK_TB_CLI_PJ)) PLAN (TB_TEMP_MARCADO INDEX 
> > (FK_MODULO_MARCADO)) PLAN SORT (JOIN (JOIN (JOIN (JOIN (JOIN (JOIN 
> > (JOIN (JOIN (JOIN (V_CONTAS_RECEBER TPO NATURAL, V_CONTAS_RECEBER 
> > TCR TB_CONTA_RECEBER
> INDEX
> > (FK_PORTADOR_CTAREC), V_CONTAS_RECEBER TCL TB_CLIENTE INDEX 
> > (TB_CLIENTES_PK)), V_CONTAS_RECEBER TPJ TB_CLI_PJ INDEX 
> > (PK_TB_CLI_PJ)), V_CONTAS_RECEBER TPF TB_CLI_PF INDEX (FK_CLI_PF)), 
> > V_CONTAS_RECEBER TCB TB_CTAREC_BAIXA INDEX (FK_CONTA_RECEBER)), 
> > V_CONTAS_RECEBER TCC TB_CUPOM_CTAREC INDEX (FK_CTAREC_CUPOM)), 
> > V_CONTAS_RECEBER TNC TB_NFV_CTAREC INDEX (FK_CTAREC_NFVENDA)), 
> > V_CONTAS_RECEBER TBO TB_CTAREC_BOLETO INDEX (FK_CTAREC_BOLETO)), 
> > V_CONTAS_RECEBER TCA INDEX (UNQ_TB_CTAREC_ADIC_ID_CTAREC)), 
> > V_CONTAS_RECEBER TCSS INDEX
> > (PK_TB_CTAREC_STATUS_SIS_ID)))
> > ------ Performance info ------
> > Prepare time = 31ms
> > Execute time = 35s 406ms
> > Avg fetch time = 11.802,00 ms
> > Current memory = 18.256.164
> > Max memory = 208.673.692
> > Memory buffers = 2.048
> > Reads from disk to cache = 301.396
> > Writes from cache to disk = 0
> > Fetches from cache = 31.559.024
> >
> > Grato pela ajuda e atenção.
> >
> > Abraço,
> > Renan Rogowski Pozzo
> >
> > *"E a paz de Deus, que excede todo o entendimento, guardará os 
> > vossos corações e os vossos pensamentos em Cristo Jesus." Filipenses 
> > 4.7* ______________________________________________
> > 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
> >
> --
> Kelver Merlotti
> (Enviado via celular)
> ______________________________________________
> 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