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

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


Isaque, já tentei com join, tem a mesma demora.

Moacir, o campo CNPJ da TB_CLI_PJ já tem índice. A consulta nessa tabela é
rápida. O problema está em usar o resultado do sub-select :/

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 17:15, Moacir Antonio Kuhn <moacir em softin.com.br>
escreveu:

> 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
>
>
> ______________________________________________
> 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