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

Isaque Voss isaque.iv em gmail.com
Qui Mar 9 17:12:07 -03 2017


Já tentou usar Join?

Em 9 de mar de 2017 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
>



Mais detalhes sobre a lista de discussão lista