Observação:
Observando os outros dois planos, parece-me que as querys trazem resultados
diferentes.

Considerações sobre minha análise:
Eu analisei o plano: https://explain.depesz.com/s/MVw1

Segue minha análise. Caso eu esteja errado, sintam-se à vontade para me
corrigir, assim eu aprendo junto:

O join da tabela "nfe_empresa ng"(2) com a tabela "nfe_ident ni"(1) resulta
em "2878 linhas"(3).
Para cada linha do resultado, é feito um "join" com "nfe n"(4) e (5)
identificado por loops=2878
Depois com (ver Nested Loop)
nfe_emitente ne:      Para cada linha de "n"  do join é feito uma busca no
índice loops=2878 (creio que o problema esteja aqui, pois aumenta muito o
*tempo* )
"              ->  Nested Loop  (cost=755.68..175486.51 rows=10 width=204)
(actual time=3691.454..12259.435 rows=2878 loops=1)"
Depois com (ver Nested Loop)
nfe_destinatario nd:  Para cada linha de "n" do join é feito uma busca no
índice loops=2878
Depois com (ver Nested Loop)
nfe_transp nt:        Para cada linha de "n" do join é feito uma busca no
índice loops=2878

Por último é feito join do resultado dos passos anteriores com o subplano 9
(que não é tão custoso, pois não retorna nenhuma linha)


(1)->Index Scan using pk_nfe_ident on nfe_ident ni  (cost=0.56..6.96 rows=1
width=82) (actual time=0.172..0.172 rows=0 loops=19692)"
(2)->Bitmap Heap Scan on nfe_empresa ng  (cost=754.02..35223.76 rows=20080
width=42) (actual time=181.835..2081.888 rows=19692 loops=1)"
(3)->Nested Loop  (cost=754.57..175161.36 rows=45 width=124) (actual
time=3691.302..5502.554 rows=2878 loops=1)"
(4)->Index Scan using pk_nfe on nfe n  (cost=0.56..6.85 rows=1 width=96)
(actual time=0.043..0.043 rows=1 loops=2878)"
(5)->Nested Loop  (cost=755.13..175470.60 rows=21 width=220) (actual
time=3691.387..5640.336 rows=2878 loops=1)"

Seria necessário a query para identificar a causa dos loops.

2017-04-26 9:44 GMT-03:00 Jorge Loss JR <jorgelos...@gmail.com>:

> Segue minha análise. Caso eu esteja errado, sintam-se à vontade para me
> corrigir, assim eu aprendo junto:
>
> O join da tabela "nfe_empresa ng"(2) com a tabela "nfe_ident ni"(1)
> resulta em "2878 linhas"(3).
> Para cada linha do resultado, é feito um "join" com "nfe n"(4) e (5)
> identificador por loops=2878
> Depois com (ver Nested Loop)
> nfe_emitente ne:      Para cada de "n" linha do join é feito uma busca no
> índice loops=2878 (creio que o problema esteja aqui, pois aumenta muito o
> custo)
> "              ->  Nested Loop  (cost=755.68..175486.51 rows=10 width=204)
> (actual time=3691.454..12259.435 rows=2878 loops=1)"
> Depois com (ver Nested Loop)
> nfe_destinatario nd:  Para cada de "n" linha do join é feito uma busca no
> índice loops=2878
> Depois com (ver Nested Loop)
> nfe_transp nt:        Para cada de "n" linha do join é feito uma busca no
> índice loops=2878
>
> Por último é feito join do resultado dos passos anteriores com o subplano
> 9 (que não é tão custoso, pois não retorna nenhuma linha)
>
>
> (1)->Index Scan using pk_nfe_ident on nfe_ident ni  (cost=0.56..6.96
> rows=1 width=82) (actual time=0.172..0.172 rows=0 loops=19692)"
> (2)->Bitmap Heap Scan on nfe_empresa ng  (cost=754.02..35223.76 rows=20080
> width=42) (actual time=181.835..2081.888 rows=19692 loops=1)"
> (3)->Nested Loop  (cost=754.57..175161.36 rows=45 width=124) (actual
> time=3691.302..5502.554 rows=2878 loops=1)"
> (4)->Index Scan using pk_nfe on nfe n  (cost=0.56..6.85 rows=1 width=96)
> (actual time=0.043..0.043 rows=1 loops=2878)"
> (5)->Nested Loop  (cost=755.13..175470.60 rows=21 width=220) (actual
> time=3691.387..5640.336 rows=2878 loops=1)"
>
> 2017-04-25 22:07 GMT-03:00 Alexsandro Haag <alexsandro.h...@gmail.com>:
>
>>
>> Em 25/04/2017 21:10, Júlio César Martini escreveu:
>>
>>>
>>> O que me chamou atenção ao fazer o EXPLAIN nesta SQL é que na lenta tem
>>> um SORT que aparentemente é ele o causador, mas não entendi o pq visto que
>>> não faço ORDER BY de nada (me desculpe se falei algum absurdo).
>>>
>>
>> Me parece mais que o seq_scan seja o causador da lentidão.
>> Voce tem um índice auxiliar para estas colunas?
>>
>>  * Sort Key: ng.cnpj_emitente, ng.numero, ng.serie, ng.tpamb, ng.mod
>>
>>
>> Seria legal postar as suas queries também...
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a