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

Renan Rogowski Pozzo renanrpozzo em gmail.com
Qui Mar 9 15:18:16 -03 2017


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*



Mais detalhes sobre a lista de discussão lista