> 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