Em 05-07-2013 14:54, Marcelo da Silva escreveu:
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
Mito detonado ? rsrsrs
Não só o tempo foi menor como o custo total da consulta também foi (4279
versus 9510).
Logo, fique com a opção B.
Note que suas tabelas têm poucas linhas, nenhum índice foi utilizado.
Considere criar índice (se já não houver) na coluna cod_key da tabela
mv_servicos_balcao. Todavia, dependendo da quantidade de resultados
dessa tabela em relação ao tamanho total dela, pode ser que o índice
nunca seja utilizado. Crie-o (se já não houver) e teste novamente.
[]s
__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: fla...@4linux.com.br
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral