> Consegui melhorar Bastante o plano de execução invertendo a tabela no
> qual é realizada o seqScan Inicial :

> EXPLAIN SELECT L.id_log,RL.id_log FROM tzrepl.tzr_replicated_log RL
> RIGHT OUTER JOIN tzrepl.tzr_log L ON L.id_log = RL.id_log
> WHERE RL.id_log IS NULL

        Legal, mas sem identação está chato de ler e comparar.  Aliás, já
apaguei as mensagens anteriores… preciso parar de fazê-lo.

O plano Anterior era assim:

EXPLAIN SELECT l.id_log FROM tzrepl.tzr_log L
WHERE id_log NOT IN(SELECT id_log FROM tzrepl.tzr_replicated_log)
"Seq Scan on tzr_log l  (cost=25877.49..7033033820.69 rows=430986 width=4)"
"  Filter: (NOT (subplan))"
"  SubPlan"
"    ->  Materialize  (cost=25877.49..39709.39 rows=994590 width=4)"
"          ->  Seq Scan on tzr_replicated_log  (cost=0.00..20996.90
rows=994590 width=4)"


e ficou mais de 1:40h e cancelei a query....

E agora :

EXPLAIN SELECT L.id_log,RL.id_log FROM tzrepl.tzr_replicated_log RL
RIGHT OUTER JOIN tzrepl.tzr_log L ON L.id_log = RL.id_log
WHERE RL.id_log IS NULL

"Merge Left Join  (cost=294375.00..313603.71 rows=861971 width=8)"
"  Merge Cond: ("outer".id_log = "inner".id_log)"
"  Filter: ("inner".id_log IS NULL)"
"  ->  Sort  (cost=138438.33..140593.25 rows=861971 width=4)"
"        Sort Key: l.id_log"
"        ->  Seq Scan on tzr_log l  (cost=0.00..22779.71 rows=861971 width=4)"
"  ->  Sort  (cost=155936.67..158423.15 rows=994590 width=4)"
"        Sort Key: rl.id_log"
"        ->  Seq Scan on tzr_replicated_log rl  (cost=0.00..20996.90
rows=994590 width=4)"

retornou o que eu queria em 14 segundos apenas....


> Mas mesmo assim vou tentar implementar o num_repl, que reduzirá ainda
> mais a quantidade de linhas do primeiro seqScan...
> O que acham ?

        Me pareceu, superficialmente, redundância, que é feio e pode
prejudicar.  Mas não analisei a fundo, nem o farei…

Como já disse antes... Sou um pouco teimoso.. Só acredito vendo ...Vou
testar ...
Caso não me de resultado esperado... Removo....
Afinal... Testes servem para isso (Colocar em teste o que a teoria explica)...

Att:
Thiago Risso
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a