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

Renan Rogowski Pozzo renanrpozzo em gmail.com
Qui Mar 9 17:03:23 -03 2017


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
>



Mais detalhes sobre a lista de discussão lista