2013/7/5 Marcelo da Silva <marc...@ig.com.br>

> Tempo os seguintes resultados:
>
> OPCAO A
>
> explain select a.* from mv_servicos_balcao a
> left join mv_servicos_print b on(cod_key_balcao = a.cod_key)
> where (b.cod_key is null)
>   and(a.obs not in('C'));
>
> "Hash Right Join  (cost=9510.11..17269.55 rows=1 width=136)"
> "  Hash Cond: (b.cod_key_balcao = a.cod_key)"
> "  Filter: (b.cod_key IS NULL)"
> "  ->  Seq Scan on mv_servicos_print b  (cost=0.00..3746.55 rows=213355
> width=8)"
> "  ->  Hash  (cost=7913.20..7913.20 rows=127753 width=136)"
> "        ->  Seq Scan on mv_servicos_balcao a  (cost=0.00..7913.20
> rows=127753 width=136)"
> "              Filter: (obs <> 'C'::bpchar)"
>
>
> OPCAO B
>
> explain select a.* from mv_servicos_balcao a
> where (a.obs not in('C'))
>   and(a.cod_key not in(select cod_key_balcao from mv_servicos_print))
>
> "Seq Scan on mv_servicos_balcao a  (cost=4279.94..12516.98 rows=63876
> width=136)"
> "  Filter: ((obs <> 'C'::bpchar) AND (NOT (hashed SubPlan 1)))"
>  "  SubPlan 1"
> "    ->  Seq Scan on mv_servicos_print  (cost=0.00..3746.55 rows=213355
> width=4)"
>
>
> Vou ser sincero... não sei fazer a leitura do explain, mas pelo que vi a
> segunda opção se mostrou mais eficiente, haja visto que sem o explain temos
> os seguintes valores em ms(milisegundos)
>
> OPCAO A = 571 rows e 496ms
> OPCAO B = 571 rows e 300ms
>
>
Possível. Mas para termos mais certeza, faça o seguinte:

VACUUM ANALYZE  mv_servicos_balcao;
VACUUM ANALYZE mv_servicos_print;

Em seguida, rode novamente as queries, mas ao invés de apenas explain use:

EXPLAIN (ANALYZE, BUFFERS) SELECT ... ;

E rode pelo menos duas vezes cada para evitar efeitos de cache (o ideal
seria executar um restart, mas 2 execuções deve dar um bom retorno).


Mito detonado ? rsrsrs
>
>
Qual o mito afinal?

xD


Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a